【发布时间】:2011-03-01 23:32:38
【问题描述】:
我正在从正在运行的 SQL 查询中获得结果,该查询输出以下日期 ($mydate) (05/02/2011) .... 它的格式为 dd/mm/yyyy ...当我运行时
date('l jS \of F Y',strtotime($mydate))
我得到一个与输入完全不同的日期,我收集这是因为我没有使用 mm/dd/yyyy 格式。
我将如何更换它以使其正常工作?
干杯。
【问题讨论】:
标签: php
我正在从正在运行的 SQL 查询中获得结果,该查询输出以下日期 ($mydate) (05/02/2011) .... 它的格式为 dd/mm/yyyy ...当我运行时
date('l jS \of F Y',strtotime($mydate))
我得到一个与输入完全不同的日期,我收集这是因为我没有使用 mm/dd/yyyy 格式。
我将如何更换它以使其正常工作?
干杯。
【问题讨论】:
标签: php
您可以使用strptime() 来解析日期/时间格式。您还可以将日期字符串转换为 YYYY-MM-DD,它总是由 strtotime 正确解析。例如:
$date = implode('-', array_reverse(explode('/', $date)));
但我同意其他答案。先看看你的数据库设置。几乎所有数据库都可以直接输出 YYYY-MM-DD 格式,并且大多数默认情况下都会这样做。看看为什么你的没有。
【讨论】:
我想知道为什么您的日期从您的数据库中以 dd/mm/yyyy 形式出现,您使用的是什么类型的数据库?如果是 MySQL,则 DATE 字段应输出 YYYY-MM-DD,这将与 strtotime() 一起正常运行。
您可以explode('/', $mydate)手动拆分dd、mm和yyyy,然后重构一个新的日期字符串,或者直接使用mktime()得到的数字。
【讨论】:
Here 是strtotime() 可以理解的格式列表。
哪个 SQL 输出如此奇怪的日期格式?还是您自己格式化日期?
【讨论】:
如果它总是以这种格式出现,你可以使用
$newtime = preg_replace("/\d\d\/\d\d/\d\d\d\d/", "$3/$2/$1", $date);
要将其转换为 yyyy/mm/dd,然后将其插入 strtotime()
这绝对不是最优雅的解决方案,我实际上建议重做数据库(创建一个新列,运行脚本来读取每个条目,生成新日期,然后输入,删除旧日期字段,然后重命名新的,因此只需执行一次)。
【讨论】: