简短的问题,但我无法理解它。这段代码:
$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是时区,但这不应影响我认为的那一天。
答案 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
全局设置一个时区。