ISO日期格式错误的一天

时间:2015-11-30 14:05:09

标签: php time iso

简短的问题,但我无法理解它。这段代码:

$date = '2015-12-08T00:00:00+01:00';
echo date('D', strtotime($date));

时返回周一
$date = '2015-12-08T00:00:00';
echo date('D', strtotime($date));

返回周二这是为什么? +01:00是时区,但这不应影响我认为的那一天。

2 个答案:

答案 0 :(得分:1)

首先,我抬头看到08-12-2015实际上是Tuesday,所以现在我们知道第一个是不正确的。

根据他们自己的文档,PHP date()是一个Unix时间戳。

我认为,当要求星期几时,将+1作为时区添加会触发计算到+0时区(UTC),因此在星期一返回23:00作为当前UTC时间。

您可以在执行其余代码之前指定时区:date_default_timezone_set('Europe/Amsterdam');

<?php
date_default_timezone_set('Europe/Amsterdam'); //this is an example of a +1 timezone, choose one from http://php.net/manual/en/timezones.php
$date = '2015-12-08T00:00:00+01:00';
echo date('D', strtotime($date) );
?>

答案 1 :(得分:1)

strtotime将使用提供的时区解析您的日期字符串,或者如果未指定则使用默认时区。我们无法从您发布服务器配置的时区的代码中看到,但是一旦解析了日期并将其转换为您的时区,时间可能合理地发生在前一天,因此您看到的原因'Mon'

通过strtotime参数在now来电中提供时区,或者使用date_default_timezone_set全局设置一个时区。