PHP date_timezone_set停止日期格式显示24小时时间


PHP date_timezone_set stops date format from showing 24hr time

我有以下代码:

$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(澳大利亚/维多利亚州)是同一时间,当您"回显"日期时,您将看到后者。