Подтвердить что ты не робот

Как найти 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, который действительно работает?

Спасибо

4b9b3361

Ответ 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

Извините за не размещение ссылок, но у меня недостаточно кармы.