_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 timeZoneName
NULL
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" |
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.
timeZoneName
NULL
veya 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 pReturnValue
dizenin boyutunu alır. NULL
ve sizeInBytes
sıfır isetimeZoneName
, dizenin hem belirtilen saat dilimini hem de sonlandırıcı NULL
bir saat dilimini tutmak için gereken bayt cinsinden boyutu içinde pReturnValue
dö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_s
mktime
, localtime
ve diğerleri gibi strftime
saat 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 tzset
bunları 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_errlist
ve _sys_nerr
_get_daylight
_get_dstbias
_get_timezone