这应该很简单,但我遇到了麻烦......所以转向StackOverflow ......
我在英国,我正在以dd / mm / yy格式从jQuery DatePicker获取日期。 我想将此日期存储为序列号(yyyymmdd),因此运行一个Date_To_Serial函数:
return date("Ymd", strtotime($strDate_In));
其中$ strDate_In是dd / mm / yy格式的日期字符串。
所以,在2013年12月1日,我希望20131201被退回。
但是,当传入01/12/2013时,它返回20130112 - PHP显然假设日期格式为mm / dd / yyyy。
我该如何解决这个问题?
答案 0 :(得分:5)
如果您知道格式,请尝试在DateTime
类上使用静态createFromFormat方法:
$date = DateTime::createFromFormat('d/m/Y', '01/12/2013');
return $date->format('Ymd');
答案 1 :(得分:1)
如果分隔符为/
,则strtotime
采用美国格式。要让它识别英国格式,分隔符必须为-
或.
:
echo date('Ymd', strtotime('01/12/2014')); // 20140112
echo date('Ymd', strtotime('01-12-2014')); // 20141201
因此,为了在您的示例中使用,您可以这样做:
return date("Ymd", strtotime(str_replace('/', '-', $strDate_In)));
答案 2 :(得分:0)
使用DateTime
对象的 createFromFormat
method 。它允许您指定输入的格式。
然后,使用 format
方法以所需格式导出日期。
答案 3 :(得分:0)
查看DateTime::createFromFormat以正确处理非标准日期格式。
return DateTime::createFromFormat("d/m/Y", $strDate_In)->format("Ymd");