У меня есть следующий код:
$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 doco здесь говорится, что капитал H является 24-часовым: http://php.net/manual/en/function.date.php H 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 (Австралия/Виктория), вы увидите последнее, когда вы "эхо" дате.
If you don't define one then it will use UTC.
неправда. Если строка даты уже имеет определенный часовой пояс, вы не можете установить его в другой с помощью второго параметра. Попробуй ... Или заметь здесь .