Сокращения часовых поясов ET, CT, MT, PT - PullRequest
0 голосов
/ 03 марта 2019

Это правильно?

Есть ли какой-нибудь встроенный способ PHP сделать это или использовать библиотеку вместо этой пользовательской функции?

/**
 * Supports the 4 Generalized Time Zones shown here: https://www.timeanddate.com/time/zone/usa of the contiguous U.S. (https://en.wikipedia.org/w/index.php?title=Time_in_the_United_States&oldid=885295732#Zones_used_in_the_contiguous_U.S.)
 * @see https://en.wikipedia.org/wiki/Tz_database
 * 
 * @param string $ianatz
 * @return string
 * @throws \Exception
 */
public static function getUsaGeneralizedTimeZoneAbbrev($ianatz) {
    if ($ianatz == 'America/New_York') {
        return 'ET';
    } else if ($ianatz == 'America/Chicago') {
        return 'CT';
    } else if ($ianatz == 'America/Phoenix') {
        return 'MT';
    } else if ($ianatz == 'America/Los_Angeles') {
        return 'PT';
    } else {
        throw new \Exception('Please use one of the 4 supported time zones of the contiguous USA.');
    }
}

Примечание: яНЕ заинтересован в EDT против EST.Я хочу обобщенную версию (ET), чтобы изменение сезона не делало метку неправильной (например, для ввода формы, который может принимать дату любого сезона).

1 Ответ

0 голосов
/ 03 марта 2019

Вы можете получить сокращение от часового пояса.

$dateTime = new DateTime(); 
$dateTime->setTimeZone(new DateTimeZone('America/Chicago')); 

$dateTime->format('T'); // CST

Но я бы предложил использовать UTC в формах, не имеющих DST.

Википедия UTC :

UTC не меняется со сменой сезонов, но местное или гражданское время может измениться, если юрисдикция часового пояса соблюдает переход на летнее или летнее время.Например, UTC на 5 часов опережает местное время на восточном побережье Соединенных Штатов зимой, но на 4 часа вперед летом.

Кроме того, я бы предложил почитать замечательную статью Зака ​​Холмана. UTC достаточно для всех, верно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...