即时通讯从运行的SQL查询中得到结果,输出以下日期($ mydate)(05/02/2011)....它的格式为dd/mm/yyyy ...当我运行PHP - 更改日期格式
date('l jS \of F Y',strtotime($mydate))
即时得到一个完全不同的日期是什么输入,即时收集,这是因为我不是用毫米/ dd/yyyy格式。
我该如何解决这个问题呢?
干杯。
即时通讯从运行的SQL查询中得到结果,输出以下日期($ mydate)(05/02/2011)....它的格式为dd/mm/yyyy ...当我运行PHP - 更改日期格式
date('l jS \of F Y',strtotime($mydate))
即时得到一个完全不同的日期是什么输入,即时收集,这是因为我不是用毫米/ dd/yyyy格式。
我该如何解决这个问题呢?
干杯。
您可以使用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()
这肯定不是最完美的解决方案,实际上,我建议重做数据库(创建一个新列,运行脚本以读取每个条目,生成新日期,然后输入它,删除旧日期字段,然后重命名新日期,因此只需完成一旦)。