时间返回错误的日子


strtotime returning wrong day

当使用以下

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进行了更正,不确定这是否会产生错误。

谢谢你的帮助

要获得预期的结果,您应该考虑使用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

小提琴

这是因为Date表示的时间在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"));

看到的例子。

最好使用DateTime()。它没有这样的限制。