Поделиться через


_get_tzname

Извлекает строковое представление имени часового пояса или имени зоны DST.

Синтаксис

errno_t _get_tzname(
    size_t* pReturnValue,
    char* timeZoneName,
    size_t sizeInBytes,
    int index
);

Параметры

pReturnValue
Длина строки включения timeZoneName NULL конца.

timeZoneName
Адрес строки символов, представляющей название часового пояса или название часового пояса с переходом летнее время (DST), в зависимости от значения index.

sizeInBytes
Размер строки символов timeZoneName в байтах.

index
Один index из двух имен часовых поясов для извлечения.

index Содержимое timeZoneName Значение timeZoneName по умолчанию
0 Название часового пояса "PST"
1 Название часового пояса с переходом на летнее время "PDT"
> 1 или < 0 errno имеет значение EINVAL не изменено

Если во время выполнения явно не обновляется, "PST" возвращается для стандартного часового пояса и "PDT" часового пояса дневного света. Дополнительные сведения см. в примечаниях.

Строка часового пояса не гарантируется одинаковой между выпусками ОС. Официальные имена часовых поясов могут изменяться и изменяться.

Возвращаемое значение

Ноль в случае успешного выполнения; в противном случае — значение типа errno.

timeZoneName Если значение равно NULLsizeInBytes нулю или меньше нуля (но не равно нулю), вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров. Если выполнение может быть продолжено, эта функция задает для errno значение EINVAL и возвращает EINVAL.

Условия ошибок

pReturnValue timeZoneName sizeInBytes index Возвращаемое значение Содержимое timeZoneName
Длина названия часового пояса NULL 0 0 или 1 0 не изменено
Длина названия часового пояса любое > 0 0 или 1 0 Название часового пояса
не изменено NULL > 0 любое EINVAL не изменено
не изменено любое zero любое EINVAL не изменено
не изменено любое > 0 > 1 EINVAL не изменено

Замечания

Функция _get_tzname извлекает символьное строковое представление текущего имени часового пояса или имени стандартного часового пояса (DST) в адрес timeZoneName в зависимости от index значения, а также размер строки в pReturnValue. Если timeZoneName значение равно sizeInBytes NULL нулю, возвращается размер строки в байтах, необходимых для хранения указанного часового пояса и концаNULLpReturnValue.

Значения index должны иметь значение 0 для стандартного часового пояса или 1 для часового пояса дневного света; любые другие значения имеют неопределенные результаты.

По умолчанию "PST" возвращается для стандартного часового пояса и "PDT" для стандартного часового пояса дневного света. Истинное имя часового пояса обновляется при первом обновлении функции, требующей сведений часового пояса, таких как strftime, , ftimeftime_s, mktimelocaltimeи другие. Если функция, которая не требует сведений часового пояса, не вызывается перед вызовом _get_tzname, значения по умолчанию возвращаются, если вы не сначала явно обновите их с помощью одной из упомянутых функций или вызовом tzset. Кроме того, если TZ задана переменная среды, она имеет приоритет над именем часового пояса, сообщаемым ОС. Даже в этом случае необходимо вызвать одну из указанных выше функций, прежде чем _get_tzname вызываться или будет возвращено значение часового пояса по умолчанию. Дополнительные сведения об переменной TZ среды и CRT см. в статье _tzset.

Предупреждение

Строка часового пояса не гарантируется одинаковой между выпусками ОС. Официальные имена часовых поясов могут изменяться и изменяться.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Пример

Этот пример вызывает _get_tzname получение требуемого размера буфера для отображения текущего имени часового пояса Daylight standard, выделяет буфер этого размера, снова вызывается _get_tzname для загрузки имени в буфере и выводит его в консоль.

Он также вызывает _tzset() вызов ОС для обновления сведений часового пояса перед вызовом _get_tzname(). В противном случае используются значения по умолчанию.

// crt_get_tzname.c
// Compile by using: cl /W4 crt_get_tzname.c
#include <stdio.h>
#include <time.h>
#include <malloc.h>

enum TZindex {
    STD,
    DST
};

int main()
{
    size_t tznameSize = 0;
    char * tznameBuffer = NULL;

    _tzset(); // Update the time zone information

    // Get the size of buffer required to hold DST time zone name
    if (_get_tzname(&tznameSize, NULL, 0, DST))
    {
        return 1;    // Return an error value if it failed
    }

    // Allocate a buffer for the name
    if (NULL == (tznameBuffer = (char *)(malloc(tznameSize))))
    {
        return 2;    // Return an error value if it failed
    }

    // Load the name in the buffer
    if (_get_tzname(&tznameSize, tznameBuffer, tznameSize, DST))
    {
        return 3;    // Return an error value if it failed
    }

    printf_s("The current Daylight standard time zone name is %s.\n", tznameBuffer);
    return 0;
}

Выходные данные

The current Daylight standard time zone name is Pacific Daylight Time.

Требования

Маршрут Обязательный заголовок
_get_tzname <time.h>

Дополнительные сведения см. в разделе Совместимость.

См. также

Управление временем
errno, _doserrno, _sys_errlist и _sys_nerr
_get_daylight
_get_dstbias
_get_timezone