У меня есть строка в этом формате: 2013-07-31T19:20:30.45-07:00
, и я хочу разобрать ее, чтобы я мог, например, сказать, в какой именно день недели. Но я изо всех сил пытаюсь справиться с смещением временной зоны. Если я date_parse("2013-07-31T19:20:30.45-07:00")
тогда я в конечном итоге с чем-то вроде этого:Разбор строки datetime с часовым поясом в PHP
array(15) {
["year"]=> int(2013)
["month"]=> int(7)
["day"]=> int(31)
["hour"]=> int(19)
["minute"]=> int(20)
["second"]=> int(30)
["fraction"]=> float(0.45)
["warning_count"]=> int(0)
["warnings"]=> array(0) { }
["error_count"]=> int(0)
["errors"]=> array(0) { }
["is_localtime"]=> bool(true)
["zone_type"]=> int(1)
["zone"]=> int(420)
["is_dst"]=> bool(false)
}
Это сделано что-то с часовым поясом, но что мне делать с 420
, если я хочу, чтобы, например, показать информацию о часовом поясе?
В случае, если это имеет значение, я ранее установил свой часовой пояс по умолчанию, используя date_default_timezone_set('UTC')
.
UPDATE: Если строка имеет положительный часовой пояс, например, 2013-07-31T19:20:30.45+07:00
то последняя часть date_parse()
выхода:
["is_localtime"]=> bool(true)
["zone_type"]=> int(1)
["zone"]=> int(-420)
["is_dst"]=> bool(false)
}
Я даже не заметил, что в зоне может быть минут! Я добавил пример с положительным часовым поясом ... Мне кажется, что «зона» - это противоположность тому, что я ожидаю ...? –
Хорошо, вы можете забыть поле zone_type в этом случае. Смещение временной зоны может составлять 15, 30 или 60 минут. – iiro
Отлично, спасибо! Прошло много времени с тех пор, как я сделал много PHP, и мне удалось во многом избежать часовых поясов, когда я в последний раз это делал. –