Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Извлекает строковое представление имени часового пояса или имени зоны 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