PHP 8.1.9 Released!

Класс IntlTimeZone

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)


Обзор классов

class IntlTimeZone {
/* Constants */
const int DISPLAY_SHORT = 1;
const int DISPLAY_LONG = 2;
/* Методы */
private __construct()
public static countEquivalentIDs(string $timezoneId): int|false
public static createDefault(): IntlTimeZone
public static createEnumeration(IntlTimeZone|string|int|float|null $countryOrRawOffset = null): IntlIterator|false
public static createTimeZone(string $timezoneId): ?IntlTimeZone
public static createTimeZoneIDEnumeration(int $type, ?string $region = null, ?int $rawOffset = null): IntlIterator|false
public static fromDateTimeZone(DateTimeZone $timezone): ?IntlTimeZone
public static getCanonicalID(string $timezoneId, bool &$isSystemId = null): string|false
public getDisplayName(bool $dst = false, int $style = IntlTimeZone::DISPLAY_LONG, ?string $locale = null): string|false
public getDSTSavings(): int
public static getEquivalentID(string $timezoneId, int $offset): string|false
public getErrorCode(): int|false
public getErrorMessage(): string|false
public static getGMT(): IntlTimeZone
public getID(): string|false
public static getIDForWindowsID(string $timezoneId, ?string $region = null): string|false
public getOffset(
    float $timestamp,
    bool $local,
    int &$rawOffset,
    int &$dstOffset
): bool
public getRawOffset(): int
public static getRegion(string $timezoneId): string|false
public static getTZDataVersion(): string|false
public static getUnknown(): IntlTimeZone
public static getWindowsID(string $timezoneId): string|false
public hasSameRules(IntlTimeZone $other): bool
public useDaylightTime(): bool

Предопределённые константы




  • IntlTimeZone::__construct — Конструктор класса, запрещающий прямое создание экземпляра
  • IntlTimeZone::countEquivalentIDs — Получить количество идентификаторов в группе похожих часовых поясов, включая данный идентификатор
  • IntlTimeZone::createDefault — Создать новую копию часового пояса по умолчанию для текущего хоста
  • IntlTimeZone::createEnumeration — Получить перечисление из идентификаторов часовых поясов по указанной стране или смещению
  • IntlTimeZone::createTimeZone — Создать объект часового пояса по заданному идентификатору
  • IntlTimeZone::createTimeZoneIDEnumeration — Получить перечисление из идентификаторов системных часовых поясов по заданным условиям фильтрации
  • IntlTimeZone::fromDateTimeZone — Создать объект часового пояса из DateTimeZone
  • IntlTimeZone::getCanonicalID — Получить канонический системный идентификатор часового пояса или нормализованный пользовательский идентификатор часового пояса по заданному идентификатору часового пояса
  • IntlTimeZone::getDisplayName — Получить имя часового пояса для отображения пользователю
  • IntlTimeZone::getDSTSavings — Получить количество миллисекунд, которое нужно добавить к местному поясному времени, чтобы получить летнее время
  • IntlTimeZone::getEquivalentID — Получить идентификатор в группе похожих часовых поясов, включая заданный идентификатор
  • IntlTimeZone::getErrorCode — Получить последний код об ошибке в объекте
  • IntlTimeZone::getErrorMessage — Получить последнее сообщение об ошибке в объекте
  • IntlTimeZone::getGMT — Создать часовой пояс по GMT (UTC)
  • IntlTimeZone::getID — Получить идентификатор часового пояса
  • IntlTimeZone::getIDForWindowsID — Преобразовать часовой пояс для Windows в системный часовой пояс
  • IntlTimeZone::getOffset — Получить необработанное значение часового пояса и смещение по Гринвичу (GMT) по заданному моменту времени
  • IntlTimeZone::getRawOffset — Получить необработанное значение смещения по Гринвичу (GMT) без учёта летнего времени
  • IntlTimeZone::getRegion — Получить код региона, соответствующего заданному идентификатору системного часового пояса
  • IntlTimeZone::getTZDataVersion — Получить версию данных о часовом поясе, который в данный момент используется в ICU
  • IntlTimeZone::getUnknown — Получить неизвестный часовой пояс («unknown»)
  • IntlTimeZone::getWindowsID — Преобразовать системный часовой пояс в часовой пояс для Windows
  • IntlTimeZone::hasSameRules — Проверить, что в другом часовом поясе используются те же самые правила и смещения, что и в первом заданном
  • IntlTimeZone::toDateTimeZone — Преобразовать в объект DateTimeZone
  • IntlTimeZone::useDaylightTime — Проверить, что в данном часовом поясе используется летнее время
add a note

User Contributed Notes 1 note

4 years ago
Currently there is no documentation available for IntlTimeZone::parse(), so it took some while to figure out a working example:

// Example for 32-bit PHP 7.0.30 with Intl version 1.1, ICU version 56.1
// To get the offset of a date including daylight saving time, getRawOffset() is
// not sufficient, getOffset() is needed. And a date is needed to take history
// in to account.

$date = '25-03-2018 12:34:56.123456 CEST'// 3rd of Februari
$timezone = \IntlTimeZone::createDefault();  // = CEST = GMT +02:00
print 'Time zone: ' . $timezone->getDisplayName() . PHP_EOL;
'DST: ' . ($timezone->useDaylightTime() ? 'DOES' : 'DOES NOT')
' happen to this timezone' . PHP_EOL;
'Possible DST difference (usec): ' . $timezone->getDSTSavings() . PHP_EOL;

$formatter = new \IntlDateFormatter(
$timestamp = $formatter->parse($date);
if (
FALSE === $timestamp) {
  throw new \
Exception('Can not parse date');
elseif (
is_float($timestamp)) {
  throw new \
Exception('Y2K38 bug @ 32 bit, please use 64 bit');
'Date parsed by IntlFormatter::parse(): ' . date('c', $timestamp)

$cal = \IntlCalendar::createInstance();
// set UNIX timestamp offset (1970-01-01 00:00:00.000000) and add the timestamp
$cal->set(1970, 0, 1, 0, 0, 0);
$cal->set(\IntlCalendar::FIELD_MILLISECOND, 0); // note: msec, not usec
$cal->add(\IntlCalendar::FIELD_SECOND, $timestamp); // note: no milliseconds
$cal->add(\IntlCalendar::FIELD_MILLISECOND, 124);  // hardcode for simplicity

header('Content-type: text/plain');
'Date constructed with IntlCalendar: ' . $formatter->format($cal)
'Raw offset by getRawOffset(): ' . $timezone->getRawOffset() . PHP_EOL;

* Function IntlTimeZone::getOffset()
* @link
* @param float $date
*   moment in time for which to return offsets, in units of milliseconds from
*   January 1, 1970 0:00 GMT, either GMT time or local wall time, depending on
*   `local'.
* @param bool $local
*   if true, `date' is local wall time; otherwise it is in GMT time.
* @param int &$rawOffset
*   output parameter to receive the raw offset, that is, the offset not
*   including DST adjustments
* @param int &$dstOffset
*   output parameter to receive the DST offset, that is, the offset to be added
*   to `rawOffset' to obtain the total offset between local and GMT time. If
*   DST is not in effect, this value is zero; otherwise it is a positive value,
*   typically one hour.

$rawOffset = NULL;
$dstOffset = NULL;
$timestamp *= 1000.0; // convert unix timestamp from secs to msecs
$timezone->getOffset($timestamp, $local = FALSE, $rawOffset, $dstOffset);
'Output of getOffset():' . PHP_EOL . json_encode([
'rawOffset' => $rawOffset,
'dstOffset' => $dstOffset
To Top