Partager via


_get_tzname

Récupère la représentation sous forme de chaîne de caractères du nom du fuseau horaire ou du nom de zone d’heure d’été (DST).

Syntaxe

errno_t _get_tzname(
    size_t* pReturnValue,
    char* timeZoneName,
    size_t sizeInBytes,
    int index
);

Paramètres

pReturnValue
Longueur de chaîne d’inclusion d’un timeZoneNameNULL terminateur.

timeZoneName
Adresse d’une chaîne de caractères pour la représentation du nom du fuseau horaire standard ou du nom du fuseau horaire d’été (DST), en fonction de index.

sizeInBytes
Taille de la chaîne de caractères timeZoneName en octets.

index
L’un index des deux noms de fuseau horaire à récupérer.

index Contenu de timeZoneName Valeur par défaut de timeZoneName
0 Nom du fuseau horaire "PST"
1 Nom du fuseau horaire d’hiver "PDT"
> 1 ou < 0 errno défini sur EINVAL non modifié

Sauf si elle est explicitement mise à jour pendant l’exécution, "PST" elle est retournée pour le fuseau horaire standard et "PDT" pour le fuseau horaire standard d’été. Pour plus d’informations, consultez les remarques.

La chaîne de fuseau horaire n’est pas garantie comme étant identique entre les versions du système d’exploitation. Les noms de fuseau horaire officiels peuvent changer.

Valeur retournée

Zéro en cas de réussite, sinon une valeur de type errno.

timeZoneName Si l’un ou l’autre sizeInBytes est NULLégal ou inférieur à zéro (mais pas les deux), un gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, cette fonction affecte la valeur errno à EINVAL et retourne EINVAL.

Conditions de l’erreur

pReturnValue timeZoneName sizeInBytes index Valeur retournée Contenu de timeZoneName
Taille du nom du fuseau horaire NULL 0 0 ou 1 0 non modifié
Taille du nom du fuseau horaire tous > 0 0 ou 1 0 Nom du fuseau horaire
non modifié NULL > 0 tous EINVAL non modifié
non modifié tous zero tous EINVAL non modifié
non modifié tous > 0 > 1 EINVAL non modifié

Notes

La _get_tzname fonction récupère la représentation sous forme de chaîne de caractères du nom du fuseau horaire actuel ou du nom de fuseau horaire d’été (DST) dans l’adresse de timeZoneName la index valeur, ainsi que la taille de la chaîne dans pReturnValue. Si timeZoneName elle est NULL égale à sizeInBytes zéro, la taille de la chaîne en octets requise pour contenir à la fois le fuseau horaire spécifié et une fin NULL, est retournée dans pReturnValue.

Les index valeurs doivent être 0 pour le fuseau horaire standard ou 1 pour le fuseau horaire d’été ; toutes les autres valeurs ont des résultats indéterminés.

Par défaut, "PST" est retourné pour le fuseau horaire standard et "PDT" pour le fuseau horaire d’été. Le nom du fuseau horaire true est mis à jour la première fois qu’il est nécessaire par une fonction qui nécessite des informations de fuseau horaire, telles que strftime, , ftime, ftime_s, mktime, , localtimeet d’autres. Si une fonction qui ne nécessite pas d’informations de fuseau horaire n’est pas appelée avant l’appel _get_tzname, les valeurs par défaut sont retournées, sauf si vous les mettez à jour explicitement à l’aide de l’une des fonctions mentionnées, ou par un appel à tzset. En outre, si la TZ variable d’environnement est définie, elle est prioritaire sur le nom du fuseau horaire signalé par le système d’exploitation. Même dans ce cas, l’une des fonctions mentionnées ci-dessus doit être appelée avant _get_tzname d’être appelée ou la valeur de fuseau horaire par défaut sera retournée. Pour plus d’informations sur la variable d’environnement TZ et le CRT, consultez _tzset.

Avertissement

La chaîne de fuseau horaire n’est pas garantie comme étant identique entre les versions du système d’exploitation. Les noms de fuseau horaire officiels peuvent changer.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Exemple

Cet exemple d’appels _get_tzname pour obtenir la taille de mémoire tampon requise pour afficher le nom actuel du fuseau horaire d’été, alloue une mémoire tampon de cette taille, appelle _get_tzname à nouveau pour charger le nom dans la mémoire tampon et l’imprime dans la console.

Il appelle _tzset() également pour que le système d’exploitation met à jour les informations du fuseau horaire avant d’appeler _get_tzname(). Sinon, les valeurs par défaut sont utilisées.

// 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;
}

Sortie

The current Daylight standard time zone name is Pacific Daylight Time.

Spécifications

Routine En-tête requis
_get_tzname <time.h>

Pour plus d'informations, voir Compatibilité.

Voir aussi

Gestion des horaires
errno, _doserrno, _sys_errlist et _sys_nerr
_get_daylight
_get_dstbias
_get_timezone