我有以下代码:
$date = date_create('2014-11-06T23:00:00.000Z');
date_timezone_set($date, timezone_open('Australia/Victoria'));
echo $date ->format('Y-m-d H:i:s');
结果是:
2014-11-07 10:00:00
然而,在这里的PHP文档中,它说大写H是24小时时间:http://php.net/manual/en/function.date.phpH一小时的24小时格式,带前导零00至23
如果我把中间一行注释如下:
$date = date_create('2014-11-06T23:00:00.000Z');
#date_timezone_set($date, timezone_open('Australia/Victoria'));
echo $date ->format('Y-m-d H:i:s');
结果是:
2014-11-06 23:00:00
它确实显示了24小时的时间,但日期是一天,这就是为什么我需要设置时区。
为什么设置date_timezone_set会阻止我以24小时时间格式显示日期,以及如何解决此问题?
除非指定时区,否则date_create
将假定当前时区。如果你没有定义一个,那么它将使用UTC。
由于时区是在date_create
之后指定的,因此日期存储为UTC。
由于2014-11-06 23:00 UTC与2014-11-07 10:00 UTC+11(澳大利亚/维多利亚州)是同一时间,当您"回显"日期时,您将看到后者。