_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
Если значение равно NULL
sizeInBytes
нулю или меньше нуля (но не равно нулю), вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров. Если выполнение может быть продолжено, эта функция задает для 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
нулю, возвращается размер строки в байтах, необходимых для хранения указанного часового пояса и концаNULL
pReturnValue
.
Значения index
должны иметь значение 0 для стандартного часового пояса или 1 для часового пояса дневного света; любые другие значения имеют неопределенные результаты.
По умолчанию "PST"
возвращается для стандартного часового пояса и "PDT"
для стандартного часового пояса дневного света. Истинное имя часового пояса обновляется при первом обновлении функции, требующей сведений часового пояса, таких как strftime
, , ftime
ftime_s
, mktime
localtime
и другие. Если функция, которая не требует сведений часового пояса, не вызывается перед вызовом _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