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