_get_tzname
Ruft die Zeichenfolgendarstellung des Zeitzonennamens oder des DST-Zonennamens (Daylight Standard Time) ab.
Syntax
errno_t _get_tzname(
size_t* pReturnValue,
char* timeZoneName,
size_t sizeInBytes,
int index
);
Parameter
pReturnValue
Die Länge der Zeichenfolge, die timeZoneName
einen NULL
Terminator einschl.
timeZoneName
Die Adresse einer Zeichenfolge für die Darstellung des Namens der Zeitzone oder des Namens der Standard-Sommerzeitzone (DST), abhängig von index
.
sizeInBytes
Die Größe der timeZoneName
-Zeichenfolge in Bytes.
index
Der index
von einem der beiden abzurufenden Zeitzonennamen.
index |
Inhalt von timeZoneName |
timeZoneName Standardwert |
---|---|---|
0 | Name der Zeitzone | "PST" |
1 | Name der Standard-Sommerzeitzone | "PDT" |
> 1 oder < 0 | errno auf EINVAL festgelegt. |
nicht geändert |
Sofern nicht während der Laufzeit explizit aktualisiert, "PST"
wird für die Standardzeitzone und "PDT"
für die Sommerstandardzeitzone zurückgegeben. Weitere Informationen finden Sie in den Anmerkungen.
Die Zeitzonenzeichenfolge ist nicht garantiert identisch zwischen Betriebssystemversionen. Offizielle Zeitzonennamen können und ändern.
Rückgabewert
Null (0), wenn erfolgreich; andernfalls ein errno
-Zeichenwert.
Wenn entweder timeZoneName
null oder sizeInBytes
kleiner als 0 (aber nicht beide) istNULL
, wird ein ungültiger Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, legt diese Funktion errno
auf EINVAL
fest und gibt EINVAL
zurück.
Fehlerbedingungen
pReturnValue |
timeZoneName |
sizeInBytes |
index |
Rückgabewert | Inhalt von timeZoneName |
---|---|---|---|---|---|
Größe des ZZ-Namens | NULL |
0 | 0 oder 1 | 0 | nicht geändert |
Größe des ZZ-Namens | any | > 0 | 0 oder 1 | 0 | ZZ-Name |
nicht geändert | NULL |
> 0 | any | EINVAL |
nicht geändert |
nicht geändert | any | null | any | EINVAL |
nicht geändert |
nicht geändert | any | > 0 | > 1 | EINVAL |
nicht geändert |
Hinweise
Die _get_tzname
Funktion ruft die Zeichenfolgendarstellung des aktuellen Zeitzonennamens oder des Sommerstandard-Zeitzonennamens (DST) zusammen mit der Größe der Zeichenfolge in pReturnValue
der Adresse timeZoneName
ab, die vom Wert abhängtindex
. Wenn timeZoneName
die Zeichenfolge null ist und sizeInBytes
null istNULL
, wird die Größe der Zeichenfolge in Bytes zurückgegeben, die erforderlich ist, um sowohl die angegebene Zeitzone als auch eine Beendigungszone NULL
pReturnValue
zu enthalten.
Die index
Werte müssen entweder 0 für die Standardzeitzone oder 1 für die Standardzeitzone für Sommer sein; alle anderen Werte haben unbestimmte Ergebnisse.
"PST"
Standardmäßig wird für die Standardzeitzone und "PDT"
für die Sommerstandardzeitzone zurückgegeben. Der name der echten Zeitzone wird aktualisiert, wenn er zum ersten Mal von einer Funktion benötigt wird, die Zeitzoneninformationen erfordert, z strftime
. B. , , ftime
, ftime_s
, mktime
und localtime
andere. Wenn eine Funktion, die keine Zeitzoneninformationen erfordert, vor dem Aufrufen _get_tzname
nicht aufgerufen wird, werden die Standardwerte zurückgegeben, es sei denn, Sie aktualisieren sie zuerst explizit mithilfe einer der erwähnten Funktionen oder durch einen Aufruf von tzset
. Wenn die TZ
Umgebungsvariable festgelegt ist, hat sie vorrang vor dem vom Betriebssystem gemeldeten Zeitzonennamen. Selbst in diesem Fall muss eine der oben genannten Funktionen aufgerufen werden, bevor _get_tzname
aufgerufen wird, oder der Standardwert der Zeitzone wird zurückgegeben. Weitere Informationen zur TZ
Umgebungsvariable und zum CRT finden Sie unter _tzset
.
Warnung
Die Zeitzonenzeichenfolge ist nicht garantiert, dass sie zwischen Betriebssystemversionen identisch ist. Offizielle Zeitzonennamen können und ändern.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Beispiel
In diesem Beispiel wird _get_tzname
aufgerufen, um die erforderliche Puffergröße abzurufen, um den aktuellen Daylight-Standardzeitzonennamen anzuzeigen, einen Puffer dieser Größe zuzuweisen, erneut aufruft _get_tzname
, um den Namen im Puffer zu laden und in die Konsole zu drucken.
Außerdem wird _tzset()
aufgerufen, dass das Betriebssystem die Zeitzoneninformationen vor dem Aufrufen _get_tzname()
aktualisiert. Andernfalls werden die Standardwerte verwendet.
// 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;
}
Output
The current Daylight standard time zone name is Pacific Daylight Time.
Anforderungen
Routine | Erforderlicher Header |
---|---|
_get_tzname |
<time.h> |
Weitere Informationen finden Sie unter Kompatibilität.
Siehe auch
Zeitverwaltung
errno
, _doserrno
, _sys_errlist
und _sys_nerr
_get_daylight
_get_dstbias
_get_timezone