Aracılığıyla paylaş


_get_tzname

Saat dilimi adının veya gün ışığı standart saati (DST) bölge adının karakter dizesi gösterimini alır.

Sözdizimi

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

Parametreler

pReturnValue
Bir sonlandırıcı eklemenin timeZoneNameNULL dize uzunluğu.

timeZoneName
bağlı olarak index, saat dilimi adının veya gün ışığı standart saat dilimi adının (DST) gösterimi için bir karakter dizesinin adresi.

sizeInBytes
Karakter dizesinin timeZoneName bayt cinsinden boyutu.

index
index Alınacak iki saat dilimi adının biri.

index İçeriği timeZoneName timeZoneName varsayılan değer
0 Saat dilimi adı "PST"
Kategori 1 Gün ışığı standart saat dilimi adı "PDT"
> 1 veya < 0 errno olarak ayarlayın EINVAL değiştirilmedi

Çalışma zamanı sırasında açıkça güncelleştirilmediği sürece, "PST" standart saat dilimi ve "PDT" gün ışığı standart saat dilimi için döndürülür. Daha fazla bilgi için bkz . Açıklamalar.

Saat dilimi dizesinin işletim sistemi sürümleri arasında aynı olacağı garanti edilmemektedir. Resmi saat dilimi adları değişiklik yapabilir ve değiştirebilir.

Dönüş değeri

Başarılı olursa sıfır, aksi takdirde bir errno tür değeri.

timeZoneNameNULLveya sıfır veya sizeInBytes sıfırdan küçükse (ancak her ikisi birden değilse), Parametre doğrulamasında açıklandığı gibi geçersiz bir parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, bu işlev olarak EINVAL ayarlanır errno ve döndürürEINVAL.

Hata koşulları

pReturnValue timeZoneName sizeInBytes index Dönüş değeri İçeriği timeZoneName
TZ adı boyutu NULL 0 0 veya 1 0 değiştirilmedi
TZ adı boyutu herhangi bir > 0 0 veya 1 0 TZ adı
değiştirilmedi NULL > 0 herhangi bir EINVAL değiştirilmedi
değiştirilmedi herhangi bir sıfır herhangi bir EINVAL değiştirilmedi
değiştirilmedi herhangi bir > 0 > 1 EINVAL değiştirilmedi

Açıklamalar

işlevi, _get_tzname değerine bağlı olarak index geçerli saat dilimi adının veya gün ışığı standart saat dilimi adının (DST) timeZoneName karakter dizesi gösterimini ve içindeki pReturnValuedizenin boyutunu alır. NULL ve sizeInBytes sıfır isetimeZoneName, dizenin hem belirtilen saat dilimini hem de sonlandırıcı NULLbir saat dilimini tutmak için gereken bayt cinsinden boyutu içinde pReturnValuedöndürülür.

Değerlerin index standart saat dilimi için 0 veya gün ışığı standart saat dilimi için 1 olması gerekir; diğer tüm değerlerin belirsiz sonuçları vardır.

Varsayılan olarak, "PST" standart saat dilimi ve "PDT" gün ışığı standart saat dilimi için döndürülür. Gerçek saat dilimi adı, , ftime, , ftime_smktime, localtimeve diğerleri gibi strftimesaat dilimi bilgilerini gerektiren bir işlev tarafından ilk kez gerektiğinde güncelleştirilir. Saat dilimi bilgisi gerektirmeyen bir işlev çağrılmadan _get_tznameönce çağrılmazsa, varsayılan değerler ilk olarak belirtilen işlevlerden birini kullanarak veya çağrısıyla tzsetbunları açıkça güncelleştirmediğiniz sürece döndürülür. Ayrıca ortam değişkeni ayarlanırsa TZ işletim sistemi tarafından bildirilen saat dilimi adından önceliklidir. Bu durumda bile, yukarıda belirtilen işlevlerden biri çağrılmadan önce _get_tzname çağrılmalıdır, aksi takdirde varsayılan saat dilimi değeri döndürülür. Ortam değişkeni ve CRT hakkında TZ daha fazla bilgi için bkz _tzset. .

Uyarı

Saat dilimi dizesinin işletim sistemi sürümleri arasında aynı olacağı garanti edilmemektedir. Resmi saat dilimi adları değişiklik yapabilir ve değiştirebilir.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Örnek

Bu örnek geçerli Yaz saati standart saat dilimi adını görüntülemek için gerekli arabellek boyutunu almak için çağırır _get_tzname , bu boyutta bir arabellek ayırır, adı arabelleğe yüklemek için yeniden çağırır _get_tzname ve konsola yazdırır.

Ayrıca çağrısından önce işletim sisteminin saat dilimi bilgilerini güncelleştirmesine neden olmak için de çağırır _tzset()_get_tzname(). Aksi takdirde, varsayılan değerler kullanılır.

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

Çıktı

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

Gereksinimler

Yordam Gerekli başlık
_get_tzname <time.h>

Daha fazla bilgi için bkz . Uyumluluk.

Ayrıca bkz.

Zaman yönetimi
errno, _doserrno, _sys_errlistve _sys_nerr
_get_daylight
_get_dstbias
_get_timezone