strtotime返回错误的一天

时间:2013-06-16 17:05:58

标签: php xml-parsing

使用以下

echo date('D',strtotime("2013-06-16T06:00:00-07:00"));
echo date('D',strtotime("2013-06-16T18:00:00-07:00"));

首先它返回Sun,第二个返回Mon。我不确定为什么或如何纠正! Date:"2013-06-16T06:00:00-07:00"是我从XML文件中检索的数据。 timestamp最后对UTC进行了更正,不确定是否会产生错误。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

这是因为日期表示date.timezone设置中指定的时区时间。因此,解析时区-07:00并将其转换回date.timezone时区。

要理解这个想法,只需在日期字符串

中添加e即可
echo date('D e',strtotime("2013-06-16T06:00:00-07:00"));
echo date('D e',strtotime("2013-06-16T18:00:00-07:00"));

请参阅example

你使用DateTime()会更好。它没有这样的限制。

答案 1 :(得分:1)

要获得预期结果,您应该考虑使用DateTime()

<?php
echo date('D',strtotime("2013-06-16T06:00:00-07:00")) . "\n";
echo date('D',strtotime("2013-06-16T18:00:00-07:00")) . "\n";;

$dt1 = new DateTime("2013-06-16T06:00:00-07:00");
$dt2 = new DateTime("2013-06-16T18:00:00-07:00");
echo $dt1->format('D') . "\n";
echo $dt2->format('D') . "\n";

输出

Sun
Mon
Sun
Sun

Fiddle