Как найти GMT время/время по названию страны?
Как мне найти название страны → дата/время GMT, которое я могу сделать, например:
Пример:
$datetime = new GMT_search('America'); //output: 2010-01-01 00:00:00
$datetime = new GMT_search('India'); //output: 2010-01-01 ??:??:??
$datetime = new GMT_search('China'); //output: 2010-01-01 ??:??:??
Я пробовал gmdate()
, date_default_timezone_set('Asia/....');
и ini_set('date.timezone','China');
, но это не помогло мне легко найти название страны для даты/времени GMT.
Может кто-нибудь пожалуйста, покажите мне пример PHP, который действительно работает?
Спасибо
Ответы
Ответ 1
Вы можете выполнять поиск по часам по странам с помощью DateTimeZone::listIdentifiers
.
Пример, чтобы получить часовые пояса в Португалии:
print_r(DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, "PT"));
дает:
Array
(
[0] => Atlantic/Azores
[1] => Atlantic/Madeira
[2] => Europe/Lisbon
)
Затем вы можете:
$d = new DateTime("now", new DateTimeZone("Atlantic/Azores"));
echo $d->format(DateTime::W3C); //2010-08-14T15:22:22+00:00
Как повторялось снова и снова в этой теме, вы не можете получить один часовой пояс для каждой страны. В странах есть несколько часовых поясов, и вы заметите, что даже эта страница даже не выбирает одно для некоторых стран, таких как U.S.A.
Ответ 2
Не уверен, что это то, что вы ищете, но PEAR имеет Date ", который имеет хороший пример, который, похоже, делает то, о чем вы просите.
http://pear.php.net/manual/en/package.datetime.date.examples.php (прокрутите вниз до "Преобразование часовых поясов" )
Ответ 3
Здесь вы найдете полный список часовых поясов, поддерживаемых PHP, которые предназначены для использования с, например, date_default_timezone_set()
. Также удобнее искать поддержку для стран с несколькими часовыми поясами. Возьмем пример американского региона.
<?php
date_default_timezone_set('America/New_York');
echo date('D,F j, Y, h:i:s A');
?>
Список представляет собой полные временные интервалы, поддерживаемые PHP, которые предназначены для использования с, например, date_default_timezone_set().
Ответ 4
Вы не можете этого сделать, так как многие страны имеют несколько часовых поясов. Вместо этого вы можете сохранить часовой пояс по имени города, но я бы использовал целое число со смещением часового пояса в секундах.
Вы можете получить список часовых поясов по континенту/городу с помощью этой функции:
www.php.net/manual/en/function.timezone-identifiers-list.php
Вы можете получить соответствующее смещение от этой функции:
www.php.net/manual/en/datetimezone.getoffset.php
Если у вас есть допустимое смещение, вы можете использовать gmdate() вместо даты(), чтобы получить дату в вашем формате без настройки часового пояса /dst. Просто передайте время() + сохраненную вами настройку:
www.php.net/manual/en/function.gmdate.php
Извините за не размещение ссылок, но у меня недостаточно кармы.