我正在阅读一个Last-Modified标题,其字符串为“Mon,21 May 2013 09:10:30 GMT”并尝试将其与我当地时间()(新西兰)进行比较。但我刚刚注意到,当字符串中包含“Mon”时,strtotime使日期为“27”而不是“21”。这是正常的吗?难道我做错了什么?想想我错过了什么......
$strtotime = strtotime("Mon, 21 May 2013 09:10:30 GMT");
$strtotime_date = date("Y-m-d H:i:s",$strtotime);
//[strtotime] => 1369645830
//[strtotime_date] => 2013-05-27 21:10:30
答案 0 :(得分:3)
出错的原因是我的日历Mon, 21 May 2013
21
st
中没有May
之类的内容Tuesday
$strtotime = strtotime("Tue, 21 May 2013 09:10:30 GMT");
echo date("Y-m-d H:i:s", $strtotime),PHP_EOL;
$strtotime = DateTime::createFromFormat("D, d M Y g:i:s O", "Tue, 21 May 2013 09:10:30 GMT");
echo $strtotime->format("Y-m-d H:i:s");
1}}
通过查看各个组件之间的分隔符来消除m / d / y或d-m-y格式的日期:如果分隔符是斜杠(/),则假设为美国m / d / y;而如果分隔符是破折号( - )或点(。),则假定为欧洲d-m-y格式。
为避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime :: createFromFormat()。
示例
2013-05-21 11:10:30 <- strtotime
2013-05-21 09:10:30 <- datetime
输出
{{1}}
答案 1 :(得分:1)
根据php.net,这种格式实际上可能无效;这里列出了可接受的格式:http://www.php.net/manual/en/datetime.formats.php - 未提及星期几。