Spec-Zone.ru › D

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 TimeZone which 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 stdTime UTC-время, которое нужно привести к времени этой временной зоны.
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 stdTime UTC-время, для которого необходимо получить смещение от 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 stdTime UTC-время, которое нужно привести к времени этой временной зоны.
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 stdTime UTC-время, для которого необходимо получить смещение от UTC для этой временной зоны.
immutable pure @safe this(Duration utcOffset, string stdName = "");
Parameters:
Duration utcOffset Смещение этой временной зоны от UTC, где запад от UTC отрицательный (он добавляется к UTC для получения скорректированного времени).
string stdName stdName для этой временной зоны.
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 stdTime UTC-время, которое нужно проверить на летнее время в этой временной зоне.
const nothrow @safe long utcToTZ(long stdTime);

Принимает количество hnsecs (100 нс) с полуночи 1 января 1 г. н. э. по UTC-времени (т. е. std time) и преобразует его во время этой временной зоны.

Parameters:
long stdTime UTC-время, которое нужно привести к времени этой временной зоны.
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API