std.datetime.timezone
| Категория | Функции |
|---|---|
| Часовые пояса | TimeZone UTC LocalTime PosixTimeZone WindowsTimeZone SimpleTimeZone |
| Утилиты | clearTZEnvVar parseTZConversions setTZEnvVar TZConversions |
- Лицензия:
- Boost License 1.0.
- Авторы:
- Jonathan M Davis
- Исходный код
- std/datetime/timezone.d
- абстрактный класс TimeZone;
-
Представляет часовой пояс. Используется с
std.datetime.systime.SysTimeдля указания часового поясаstd.datetime.systime.SysTime.- const nothrow @property @safe string name();
-
Название часового пояса. Точный формат названия часового пояса зависит от производного класса. В случае с
PosixTimeZoneэто имя из базы данных часовых поясов, а в случае сWindowsTimeZoneэто имя, которое Windows выбрал для записи в реестр для этого часового пояса (обычно это имя, которое они предоставляютstdTime, если ОС на английском языке). Для других типов часовых поясов это зависит от того, как они реализованы.- См. также:
-
Статью Википедии о базе данных часовых поясов
Список часовых поясов
- const nothrow @property @safe string stdName();
-
Обычно аббревиатура (обычно 3 или 4 буквы) часового пояса, когда летнее время не действует (например, PST). Она не обязательно уникальна.
Однако в Windows это может быть полное имя (например, Pacific Standard Time). В любом случае, это не то же самое, что и имя.
- const nothrow @property @safe string dstName();
-
Обычно аббревиатура (обычно 3 или 4 буквы) часового пояса, когда летнее время действует (например, PDT). Она не обязательно уникальна.
Однако в Windows это может быть полное имя (например, Pacific Daylight Time). В любом случае, это не то же самое, что и имя.
- абстрактный const nothrow @property @safe bool hasDST();
-
Наличие летнего времени в этом часовом поясе в любой момент времени. Обратите внимание, что для некоторых типов часовых поясов может не быть летнего времени на текущие даты, но оно всё равно вернёт true для
hasDST, поскольку в часовом поясе когда-то было летнее время. - абстрактный const nothrow @safe bool dstInEffect(long stdTime);
-
Принимает количество hnsecs (100 нс) с полуночи 1 января 1 г. н.э. по UTC (т.е. stdTime) и возвращает, действует ли летнее время в этом часовом поясе в данный момент времени.
- Параметры:
long stdTimeВремя UTC, которое нужно проверить на наличие летнего времени в этом часовом поясе.
- абстрактный const nothrow @safe long utcToTZ(long stdTime);
-
Принимает количество hnsecs (100 нс) с полуночи 1 января 1 г. н.э. по UTC (т.е. stdTime) и преобразует его во время этого часового пояса.
- Параметры:
long stdTimeВремя UTC, которое нужно скорректировать на время этого часового пояса.
- абстрактный const nothrow @safe long tzToUTC(long adjTime);
-
Принимает количество hnsecs (100 нс) с полуночи 1 января 1 г. н.э. по времени этого часового пояса и преобразует его в UTC (т.е. std time).
- Параметры:
long adjTimeВремя в этом часовом поясе, которое нужно скорректировать на время UTC.
- const nothrow @safe Duration utcOffsetAt(long stdTime);
-
Возвращает разницу от UTC в данный момент времени. Включает разницу, связанную с летним временем (если таковая имеется).
- Параметры:
long stdTimeВремя UTC, для которого необходимо получить разницу от UTC для этого часового пояса.
- protected immutable pure @safe this(string name, string stdName, string dstName);
-
- Параметры:
string nameНазвание часового пояса. string stdNameАббревиатура часового пояса в стандартном времени. string dstNameАббревиатура часового пояса в летнее время.
- класс LocalTime: std.datetime.timezone.TimeZone;
-
Часовой пояс, представляющий текущий часовой пояс системы, на которой выполняется ваша программа.
Использует базовые вызовы C для корректировки времени, а не D-код на основе системных настроек для расчета времени, как
PosixTimeZoneиWindowsTimeZone. Это также означает, что будет использоваться текущий часовой пояс системы, даже если часовой пояс системы изменится во время выполнения программы.- static pure nothrow @trusted immutable(LocalTime) opCall();
-
LocalTime— это синглтон-класс.LocalTimeвозвращает его единственный экземпляр. - const nothrow @property @safe string name();
-
По сути, это название локального часового пояса. Однако это всегда возвращает пустую строку. Это связано с тем, что часовые пояса не могут быть однозначно идентифицированы по атрибутам, предоставленным ОС (таким как
stdNameиdstName), и ни системы Posix, ни системы Windows не предоставляют простого способа получить имя часового пояса из базы данных часовых поясов для локального часового пояса.- См. также:
-
Статью Википедии о базе данных часовых поясов
Список часовых поясов
- const nothrow @property @trusted string stdName();
-
Обычно аббревиатура (обычно 3 или 4 буквы) часового пояса, когда летнее время не действует (например, PST). Она не обязательно уникальна.
Однако в Windows это может быть полное имя (например, Pacific Standard Time). В любом случае, это не то же самое, что и имя.
Этот свойство переопределяется, так как локальное время системы может измениться во время выполнения программы, и нам нужно определить его динамически, а не как фиксированное значение, как в большинстве часовых поясов. - const nothrow @property @trusted string dstName();
-
Обычно аббревиатура (обычно 3 или 4 буквы) часового пояса, когда летнее время действует (например, PDT). Она не обязательно уникальна.
Однако в Windows это может быть полное имя (например, Pacific Daylight Time). В любом случае, это не то же самое, что и имя.
Этот свойство переопределяется, так как локальное время системы может измениться во время выполнения программы, и нам нужно определить его динамически, а не как фиксированное значение, как в большинстве часовых поясов. - const nothrow @property @trusted bool hasDST();
-
Наличие летнего времени в этом часовом поясе в любой момент времени. Обратите внимание, что для некоторых типов часовых поясов может не быть летнего времени на текущие даты, но оно всё равно вернёт true для
hasDST, поскольку в часовом поясе когда-то было летнее время. - const nothrow @trusted bool dstInEffect(long stdTime);
-
Принимает количество hnsecs (100 нс) с полуночи 1 января 1 г. н.э. по UTC (т.е. std time) и возвращает, действует ли летнее время в этом часовом поясе в данный момент времени.
- Параметры:
long stdTimeВремя UTC, которое нужно проверить на наличие летнего времени в этом часовом поясе.
- const nothrow @trusted long utcToTZ(long stdTime);
-
Возвращает hnsecs в локальном часовом поясе, используя стандартные функции C на системах Posix и стандартные вызовы Windows на системах Windows для корректировки времени на соответствующий часовой пояс от std времени.
- Параметры:
long stdTimeВремя UTC, которое нужно скорректировать на время этого часового пояса.
- См. также:
TimeZone.utcToTZ
- const nothrow @trusted long tzToUTC(long adjTime);
-
Возвращает std time, используя стандартные функции C на системах Posix и стандартные вызовы Windows на системах Windows для корректировки времени на UTC от соответствующего часового пояса.
- См. также:
-
TimeZone.tzToUTC
- Параметры:
long adjTimeВремя в этом часовом поясе, которое нужно скорректировать на время UTC.
- класс UTC: std.datetime.timezone.TimeZone;
-
A
TimeZonewhich represents UTC.- static pure nothrow @safe immutable(UTC) opCall();
-
UTC— это синглтон-класс.UTCвозвращает его единственный экземпляр. - const nothrow @property @safe bool hasDST();
-
Всегда возвращает false.
- const nothrow @safe bool dstInEffect(long stdTime);
-
Всегда возвращает false.
- const nothrow @safe long utcToTZ(long stdTime);
-
Возвращает заданные hnsecs без каких-либо изменений.
- Parameters:
long stdTimeUTC-время, которое нужно привести к времени этой временной зоны.
- See Also:
TimeZone.utcToTZ
- const nothrow @safe long tzToUTC(long adjTime);
-
Возвращает заданные hnsecs без каких-либо изменений.
- See Also:
-
TimeZone.tzToUTC
- Parameters:
long adjTimeВремя в этой временной зоне, которое нужно привести к UTC-времени.
- const nothrow @safe Duration utcOffsetAt(long stdTime);
-
Возвращает
core.time.Durationравный 0.- Parameters:
long stdTimeUTC-время, для которого необходимо получить смещение от UTC для этой временной зоны.
- class SimpleTimeZone: std.datetime.timezone.TimeZone;
-
Представляет временную зону со смещением (в минутах, запад отрицательный) от UTC, но без летнего времени.
В основном используется как временная зона в результате
fromISOString,fromISOExtString, иfromSimpleStringметодаstd.datetime.systime.SysTime.
nameиdstNameвсегда пустые строки, так как в этой временной зоне нет летнего времени, и хотя она может представлять временную зону из базы данных TZ, очевидно, что она вряд ли будет следовать точным правилам любой из временных зон в базе данных TZ, поэтому нет смысла ее устанавливать.- const nothrow @property @safe bool hasDST();
-
Всегда возвращает false.
- const nothrow @safe bool dstInEffect(long stdTime);
-
Всегда возвращает false.
- const nothrow @safe long utcToTZ(long stdTime);
-
Принимает количество hnsecs (100 нс) с полуночи 1 января 1 г. н. э. по UTC (т. е. std time) и преобразует его во время этой временной зоны.
- Parameters:
long stdTimeUTC-время, которое нужно привести к времени этой временной зоны.
- const nothrow @safe long tzToUTC(long adjTime);
-
Принимает количество hnsecs (100 нс) с полуночи 1 января 1 г. н. э. по времени этой временной зоны и преобразует его в UTC (т. е. std time).
- Parameters:
long adjTimeВремя в этой временной зоне, которое нужно привести к UTC-времени.
- const nothrow @safe Duration utcOffsetAt(long stdTime);
-
Возвращает utcOffset в виде
core.time.Duration.- Parameters:
long stdTimeUTC-время, для которого необходимо получить смещение от UTC для этой временной зоны.
- immutable pure @safe this(Duration utcOffset, string stdName = "");
-
- Parameters:
Duration utcOffsetСмещение этой временной зоны от UTC, где запад от UTC отрицательный (он добавляется к UTC для получения скорректированного времени). string stdNamestdNameдля этой временной зоны.
- const pure nothrow @property @safe Duration utcOffset();
-
Величина смещения от UTC (отрицательное значение — запад от UTC, положительное — восток).
- class PosixTimeZone: std.datetime.timezone.TimeZone;
-
Представляет временную зону из файла временной зоны базы данных TZ. Файлы базы данных TZ — это способ хранения информации о временных зонах на системах Posix. К сожалению, Windows не использует базу данных TZ.
Чтобы получить
PosixTimeZone, вызовитеPosixTimeZone.getTimeZone(что позволяет указать расположение файлов временной зоны).- Примечание
- Если локальная временная зона вашей системы не работает с секундами високосного года (что маловероятно), то единственный способ получить временную зону, учитывающую секунды високосного года, — использовать
PosixTimeZoneс временной зоной, имя которой начинается с "right/". Эти файлы временных зон включают секунды високосного года, иPosixTimeZoneбудет учитывать их (хотя системы posix, использующие временную зону "right/" в качестве локальной временной зоны, не будут учитывать секунды високосного года, даже если они есть в файле).
- See Also:
-
Главная страница файлов базы данных TZ
Статья Википедии о базе данных TZ
Список временных зон
- const nothrow @property @safe bool hasDST();
-
Имеет ли эта временная зона летнее время в какой-либо момент времени. Обратите внимание, что для некоторых типов временных зон может не быть летнего времени для текущих дат, но все равно вернет true для
hasDST, потому что временная зона когда-то имела летнее время. - const nothrow @safe bool dstInEffect(long stdTime);
-
Принимает количество hnsecs (100 нс) с полуночи 1 января 1 г. н. э. по UTC-времени (т. е. std time) и возвращает значение true, если летнее время действует в этой временной зоне в данный момент времени.
- Parameters:
long stdTimeUTC-время, которое нужно проверить на летнее время в этой временной зоне.
- const nothrow @safe long utcToTZ(long stdTime);
-
Принимает количество hnsecs (100 нс) с полуночи 1 января 1 г. н. э. по UTC-времени (т. е. std time) и преобразует его во время этой временной зоны.
- Parameters:
long stdTimeUTC-время, которое нужно привести к времени этой временной зоны.
- const nothrow @safe long tzToUTC(long adjTime);
-
Принимает количество hnsecs (100 нс) с полуночи 1 января 1 г. н. э. по времени этой временной зоны и преобразует его в UTC (т. е. std time).
- Parameters:
long adjTimeВремя в этой временной зоне, которое нужно привести к UTC-времени.
- enum string defaultTZDatabaseDir;
-
Директория по умолчанию, где хранятся файлы базы данных TZ. Пустая для Windows, так как их там нет. Вы также можете использовать TZDatabaseDir, чтобы передать произвольный путь во время компиляции, вместо того, чтобы жестко его кодировать здесь. Android объединяет все данные временных зон в один файл, называемый tzdata, и хранит его в каталоге ниже.
- static @trusted immutable(PosixTimeZone) getTimeZone(string name, string tzDatabaseDir = defaultTZDatabaseDir);
-
Возвращает
TimeZoneс заданным именем из базы данных TZ. Информация о временной зоне извлекается из файлов базы данных TZ в заданной директории.- See Also:
-
Статья Википедии о базе данных TZ
Список временных зон
- Parameters:
string nameИмя временной зоны из базы данных TZ. string tzDatabaseDirДиректория, в которой находятся файлы базы данных TZ. Поскольку эти файлы не находятся на системах Windows, укажите их и укажите здесь их расположение, чтобы использовать PosixTimeZones.
- Throws:
-
std.datetime.date.DateTimeException, если заданная временная зона не найдена, илиFileException, если файл базы данных TZ не удалось открыть.
- Примеры:
-
version (Posix) { auto tz = PosixTimeZone.getTimeZone("America/Los_Angeles"); writeln(tz.name); // "America/Los_Angeles" writeln(tz.stdName); // "PST" writeln(tz.dstName); // "PDT" }
- static @safe string[] getInstalledTZNames(string subName = "", string tzDatabaseDir = defaultTZDatabaseDir);
-
Возвращает список имен временных зон, установленных в системе.
Указание подстроки сужает список временных зон (который может насчитывать тысячи). Например, передача "America" в качестве подстроки возвращает только временные зоны, начинающиеся с "America".
- Parameters:
string subNameПервая часть желаемых временных зон. string tzDatabaseDirДиректория, в которой находятся файлы базы данных TZ.
- Throws:
-
FileExceptionесли чтение из диска завершилось неудачей.
- class WindowsTimeZone: std.datetime.timezone.TimeZone;
-
Этот класс предназначен только для Windows.
Представляет часовой пояс из реестра Windows. К сожалению, Windows не использует базу данных TZ. Для использования базы данных TZ используйте
PosixTimeZone(которая считывает информацию из файлов базы данных TZ на диске) в Windows, предоставив файлы базы данных TZ и указавPosixTimeZone.getTimeZoneкаталог, в котором они находятся.
Файлы базы данных TZ и информация о часовых поясах Windows часто не совпадают. В Windows много ошибок в отношении переходов на летнее время (особенно для исторических дат). Кроме того, файлы базы данных TZ содержат гораздо больше часовых поясов, чем Windows. Поэтому для точной информации о часовом поясе используйте файлы базы данных TZ сPosixTimeZoneвместоWindowsTimeZone. Однако, посколькуWindowsTimeZoneиспользует системные вызовы Windows для работы с временем, он гораздо больше соответствует поведению других программ Windows. Следует учитывать различия при выборе метода.
WindowsTimeZoneне существует в системах Posix.
Чтобы получитьWindowsTimeZone, вызовитеWindowsTimeZone.getTimeZone.- См. также:
- Домашняя страница файлов базы данных TZ
- const nothrow @property @safe bool hasDST();
-
Определяет, имеет ли этот часовой пояс летнее время в какой-либо момент времени. Обратите внимание, что для некоторых типов часовых поясов может не быть летнего времени для текущих дат, но он по-прежнему вернёт true для
hasDST, потому что часовой пояс когда-то имел летнее время. - const nothrow @safe bool dstInEffect(long stdTime);
-
Принимает количество ннсеков (100 нс) с полуночи 1 января 1 года нашей эры по UTC (т.е. стандартное время) и возвращает, действует ли летнее время в этом часовом поясе в данный момент времени.
- Параметры:
long stdTimeВремя UTC, которое нужно проверить на летнее время в этом часовом поясе.
- const nothrow @safe long utcToTZ(long stdTime);
-
Принимает количество ннсеков (100 нс) с полуночи 1 января 1 года нашей эры по UTC (т.е. стандартное время) и преобразует его в время этого часового пояса.
- Параметры:
long stdTimeВремя UTC, которое нужно скорректировать до времени этого часового пояса.
- const nothrow @safe long tzToUTC(long adjTime);
-
Принимает количество ннсеков (100 нс) с полуночи 1 января 1 года нашей эры в этом часовом поясе и преобразует его в UTC (т.е. стандартное время).
- Параметры:
long adjTimeВремя в этом часовом поясе, которое нужно скорректировать до времени UTC.
- static @safe immutable(WindowsTimeZone) getTimeZone(string name);
-
Возвращает
TimeZoneс заданным именем в соответствии с именами часовых поясов Windows. Информация о часовом поясе извлекается из реестра Windows.- См. также:
-
Статья в Википедии о базе данных TZ
Список часовых поясов
- Параметры:
string nameИмя часового пояса базы данных TZ.
- Исключения:
-
std.datetime.date.DateTimeException, если заданный часовой пояс не был найден.
- Пример
auto tz = WindowsTimeZone.getTimeZone("Pacific Standard Time"); - static @safe string[] getInstalledTZNames();
-
Возвращает список имён установленных часовых поясов на системе. Список, возвращаемый WindowsTimeZone, содержит имена часовых поясов Windows, а не имена часовых поясов базы данных TZ. Однако
TimeZone.getinstalledTZNamesвернёт имена часовых поясов базы данных TZ, которые эквивалентны именам часовых поясов Windows.
- nothrow @safe void setTZEnvVar(string tzDatabaseName);
-
Эта функция предназначена только для Posix.
Устанавливает местный часовой пояс в системах Posix с помощью имени часового пояса базы данных TZ, установив переменную окружения TZ.
К сожалению, на Windows это невозможно сделать с помощью имени часового пояса базы данных TZ, поэтому эта функция существует только в системах Posix. - nothrow @safe void clearTZEnvVar();
-
Эта функция предназначена только для Posix.
Очищает переменную окружения TZ.
- struct TZConversions;
pure @safe TZConversions parseTZConversions(string windowsZonesXMLText); -
Предоставляет преобразования между именами часовых поясов базы данных часовых поясов IANA (которые используются системами Posix) и именами часовых поясов, используемых Windows.
Windows использует другой набор имён часовых поясов, чем база данных часовых поясов IANA, и их соответствие со временем меняется (особенно при обновлении Windows компанией Microsoft). windowsZones.xml предоставляет текущие преобразования (которые могут или не могут совпадать с тем, что есть на конкретном компьютере с Windows, в зависимости от его актуальности), и parseTZConversions считывает эти преобразования из windowsZones.xml, чтобы программа D могла использовать эти преобразования.
Однако следует отметить, что информация о часовом поясе в Windows часто менее точна, чем в базе данных часовых поясов IANA, и если кому-то действительно нужна точная информация о часовом поясе, они должны использовать файлы базы данных часовых поясов IANA сPosixTimeZoneв Windows, а не сWindowsTimeZone, в то время какWindowsTimeZoneболее уместно при попытке согласовать время, которое Windows будет считать в определённом часовом поясе.
Кроме того, база данных часовых поясов IANA имеет гораздо больше часовых поясов, чем Windows.- Параметры:
string windowsZonesXMLTextТекст из windowsZones.xml
- Исключения:
- Исключение, если при парсинге заданного XML произошла ошибка.
// Parse the conversions from a local file. auto text = std.file.readText("path/to/windowsZones.xml"); auto conversions = parseTZConversions(text); // Alternatively, grab the XML file from the web at runtime // and parse it so that it's guaranteed to be up-to-date, though // that has the downside that the code needs to worry about the // site being down or unicode.org changing the URL. auto url = "http://unicode.org/cldr/data/common/supplemental/windowsZones.xml"; auto conversions2 = parseTZConversions(std.net.curl.get(url));
- string[][string] toWindows;
-
Ключ — это имя часового пояса Windows, а значение — список имён часовых поясов базы данных IANA, которые близки (в настоящее время только одно, но это позволяет несколько, на случай, если это когда-нибудь понадобится).
- string[][string] fromWindows;
-
Ключ — это имя часового пояса базы данных IANA, а значение — список имён часовых поясов Windows, которые близки (обычно только один, но это могут быть несколько).
© 1999–2021 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/std_datetime_timezone.html