Php ISO日期格式到错误日期
这是一个简短的问题,但我搞不懂。这段代码:Php ISO日期格式到错误日期,php,time,iso,Php,Time,Iso,这是一个简短的问题,但我搞不懂。这段代码: $date = '2015-12-08T00:00:00+01:00'; echo date('D', strtotime($date)); 返回Mon while $date = '2015-12-08T00:00:00'; echo date('D', strtotime($date)); 星期二返回。为什么呢?+01:00代表时区,但我认为这不会影响当天 首先我查到2015年12月8日实际上是星期二,所以现在我们知道第一个是不正确的 PHP的
$date = '2015-12-08T00:00:00+01:00';
echo date('D', strtotime($date));
返回Mon while
$date = '2015-12-08T00:00:00';
echo date('D', strtotime($date));
星期二返回。为什么呢?+01:00代表时区,但我认为这不会影响当天 首先我查到2015年12月8日实际上是星期二,所以现在我们知道第一个是不正确的 PHP的
date()
是一个Unix时间戳,根据他们自己的文档
我认为,如果将+1添加为时区,则在请求一周中的某一天时,会触发对+0时区(UTC)的计算,因此会返回星期一的23:00作为当前UTC时间
您可以在执行其余代码之前指定时区:date\u default\u timezone\u set('Europe/Amsterdam')代码>
将使用提供的时区或默认时区(如果未指定)解析日期字符串。我们无法从您发布的代码中看到您的服务器配置为哪个时区,但一旦解析日期并将其转换为您的时区,时间可能会合法地出现在前一天,因此您会看到“继续”
可以通过now
参数在strotime
调用中提供时区,也可以全局设置一个。“在我看来,+01:00代表时区,但不应该影响一天。”为什么不呢?在我的下一个当地午夜(格林尼治标准时间),这里是星期二,但在美国仍然是星期一。你在哪个时区?(或者,更具体地说,您的PHP环境设置在哪个时区?echo(date\u default\u timezone\u get());
)我在欧洲/阿姆斯特丹时间。格林尼治时间+1。所以strotime取决于服务器的时间?这是否意味着该日期('D',标准时间(2015-12-08));有时是星期一,有时是星期二?如果我将PHP时区设置为“Europe/Amsterdam”,我会得到第一段代码的结果“Tue”。你确定你的时区是按照你的想法设置的吗?您是否运行了echo(date\u default\u timezone\u get())代码>?感谢您的回复。它解决了我的问题。据我所知,Unix时间戳取决于您的服务器设置。今天又学到了一些东西。这是合乎逻辑的,因为代码需要一个时间参考点:您的服务器时间,您当然可以让它与时间服务器同步。
<?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) );
?>