_get_tzname
Pobiera ciąg znaków reprezentujący nazwę strefy czasowej lub nazwę strefy czasowej (DST).
Składnia
errno_t _get_tzname(
size_t* pReturnValue,
char* timeZoneName,
size_t sizeInBytes,
int index
);
Parametry
pReturnValue
Długość ciągu obejmująca timeZoneName
NULL
terminator.
timeZoneName
Adres ciągu znaków dla reprezentacji nazwy strefy czasowej lub nazwy strefy czasowej (DST), w zależności od index
.
sizeInBytes
Rozmiar timeZoneName
ciągu znaków w bajtach.
index
Jedna index
z dwóch nazw stref czasowych do pobrania.
index |
Zawartość timeZoneName |
timeZoneName wartość domyślna |
---|---|---|
0 | Nazwa strefy czasowej | "PST" |
1 | Nazwa strefy czasowej (czas letni) | "PDT" |
> 1 lub < 0 | errno ustaw wartość na EINVAL |
niezmodyfikowane |
O ile nie zostanie jawnie zaktualizowana podczas wykonywania, "PST"
zostanie zwrócona dla standardowej strefy czasowej i "PDT"
strefy czasowej (standardowa). Aby uzyskać więcej informacji, zobacz uwagi.
Ciąg strefy czasowej nie ma gwarancji, że jest taki sam między wersjami systemu operacyjnego. Oficjalne nazwy stref czasowych mogą i mogą ulec zmianie.
Wartość zwracana
Zero w przypadku powodzenia errno
, w przeciwnym razie wartość typu.
Jeśli wartość timeZoneName
to NULL
, lub sizeInBytes
jest równa zero lub jest mniejsza niż zero (ale nie obie), wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, ta funkcja ustawia errno
wartość EINVAL
i zwraca wartość EINVAL
.
Warunki błędu
pReturnValue |
timeZoneName |
sizeInBytes |
index |
Wartość zwracana | Zawartość timeZoneName |
---|---|---|---|---|---|
rozmiar nazwy TZ | NULL |
0 | 0 lub 1 | 0 | niezmodyfikowane |
rozmiar nazwy TZ | dowolny | > 0 | 0 lub 1 | 0 | Nazwatz |
niezmodyfikowane | NULL |
> 0 | dowolny | EINVAL |
niezmodyfikowane |
niezmodyfikowane | dowolny | zero | dowolny | EINVAL |
niezmodyfikowane |
niezmodyfikowane | dowolny | > 0 | > 1 | EINVAL |
niezmodyfikowane |
Uwagi
Funkcja _get_tzname
pobiera ciąg znaków reprezentujący bieżącą nazwę strefy czasowej lub nazwę strefy czasowej (DST) w adresie timeZoneName
w zależności od index
wartości wraz z rozmiarem ciągu w pReturnValue
. Jeśli timeZoneName
wartość jest NULL
równa zerosizeInBytes
, rozmiar ciągu w bajtach wymaganych do przechowywania zarówno określonej strefy czasowej, jak i zakończenia NULL
, jest zwracany w .pReturnValue
Wartości index
muszą być równe 0 dla standardowej strefy czasowej lub 1 dla strefy czasowej (czas standardowy) — wszystkie inne wartości mają nieokreślone wyniki.
Domyślnie "PST"
jest zwracana dla standardowej strefy czasowej i "PDT"
strefy czasowej (czas letni). Prawdziwa nazwa strefy czasowej jest aktualizowana po raz pierwszy przez funkcję, która wymaga informacji o strefie czasowej, takich jak strftime
, ftime
, ftime_s
mktime
, , localtime
i innych. Jeśli funkcja, która nie wymaga informacji o strefie czasowej, nie jest wywoływana przed wywołaniem _get_tzname
, zwracane są wartości domyślne, chyba że najpierw jawnie zaktualizujesz je przy użyciu jednej z wymienionych funkcji lub przez wywołanie metody tzset
. Ponadto jeśli zmienna TZ
środowiskowa jest ustawiona, ma pierwszeństwo przed nazwą strefy czasowej zgłaszanej przez system operacyjny. Nawet w takim przypadku należy wywołać jedną z funkcji wymienionych powyżej przed _get_tzname
wywołaniami lub zostanie zwrócona domyślna wartość strefy czasowej. Aby uzyskać więcej informacji na temat zmiennej środowiskowej TZ
i CRT, zobacz _tzset
.
Ostrzeżenie
Ciąg strefy czasowej nie ma gwarancji, że jest taki sam między wersjami systemu operacyjnego. Oficjalne nazwy stref czasowych mogą i mogą ulec zmianie.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Przykład
To przykładowe wywołania _get_tzname
umożliwiające pobranie wymaganego rozmiaru buforu w celu wyświetlenia bieżącej standardowej nazwy strefy czasowej (czas letni), przydziela bufor tego rozmiaru, wywołuje _get_tzname
ponownie nazwę w buforze i drukuje ją do konsoli.
Wywołuje również polecenie _tzset()
, aby system operacyjny zaktualizował informacje o strefie czasowej przed wywołaniem metody _get_tzname()
. W przeciwnym razie są używane wartości domyślne.
// 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;
}
Wyjście
The current Daylight standard time zone name is Pacific Daylight Time.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_get_tzname |
<time.h> |
Aby uzyskać więcej informacji, zobacz Zgodność.
Zobacz też
Zarządzanie czasem
errno
, _doserrno
, _sys_errlist
i _sys_nerr
_get_daylight
_get_dstbias
_get_timezone