Freigeben über


_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 pReturnValueder 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 NULLpReturnValuezu 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, mktimeund localtimeandere. Wenn eine Funktion, die keine Zeitzoneninformationen erfordert, vor dem Aufrufen _get_tznamenicht 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