_get_tzname
Mengambil representasi string karakter dari nama zona waktu atau nama zona waktu standar siang hari (DST).
Sintaks
errno_t _get_tzname(
size_t* pReturnValue,
char* timeZoneName,
size_t sizeInBytes,
int index
);
Parameter
pReturnValue
Panjang timeZoneName
string termasuk NULL
terminator.
timeZoneName
Alamat string karakter untuk representasi nama zona waktu atau nama zona waktu standar siang hari (DST), tergantung pada index
.
sizeInBytes
Ukuran timeZoneName
string karakter dalam byte.
index
index
Salah satu dari dua nama zona waktu yang akan diambil.
index |
Isi dari timeZoneName |
timeZoneName nilai default |
---|---|---|
0 | Nama zona waktu | "PST" |
1 | Nama zona waktu standar siang hari | "PDT" |
> 1 atau < 0 | errno Atur ke EINVAL |
tidak dimodifikasi |
Kecuali diperbarui secara eksplisit selama runtime, "PST"
dikembalikan untuk zona waktu standar dan "PDT"
untuk zona waktu standar siang hari. Untuk informasi selengkapnya, lihat Komentar.
String zona waktu tidak dijamin sama antara rilis OS. Nama zona waktu resmi dapat dan melakukan perubahan.
Nilai hasil
Nol jika berhasil, jika tidak, nilai errno
jenis.
Jika adalah timeZoneName
NULL
, atau sizeInBytes
nol atau kurang dari nol (tetapi tidak keduanya), handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi ini diatur errno
ke EINVAL
dan mengembalikan EINVAL
.
Kondisi kesalahan
pReturnValue |
timeZoneName |
sizeInBytes |
index |
Nilai hasil | Isi dari timeZoneName |
---|---|---|---|---|---|
ukuran nama TZ | NULL |
0 | 0 atau 1 | 0 | tidak dimodifikasi |
ukuran nama TZ | any | > 0 | 0 atau 1 | 0 | Nama TZ |
tidak dimodifikasi | NULL |
> 0 | any | EINVAL |
tidak dimodifikasi |
tidak dimodifikasi | any | zero | any | EINVAL |
tidak dimodifikasi |
tidak dimodifikasi | any | > 0 | > 1 | EINVAL |
tidak dimodifikasi |
Keterangan
Fungsi ini _get_tzname
mengambil representasi string karakter dari nama zona waktu saat ini atau nama zona waktu standar siang hari (DST) ke alamat timeZoneName
tergantung pada index
nilai, bersama dengan ukuran string di pReturnValue
. Jika timeZoneName
adalah NULL
dan sizeInBytes
nol, ukuran string dalam byte yang diperlukan untuk menahan zona waktu yang ditentukan, dan mengakhiri NULL
, dikembalikan dalam pReturnValue
.
Nilai index
harus 0 untuk zona waktu standar atau 1 untuk zona waktu standar siang hari; nilai lain memiliki hasil yang tidak ditentukan.
Secara default, "PST"
dikembalikan untuk zona waktu standar dan "PDT"
untuk zona waktu standar siang hari. Nama zona waktu yang sebenarnya diperbarui saat pertama kali diperlukan oleh fungsi yang memerlukan informasi zona waktu, seperti strftime
, , ftime
, ftime_s
mktime
, localtime
, dan lainnya. Jika fungsi yang tidak memerlukan informasi zona waktu tidak dipanggil sebelum memanggil _get_tzname
, nilai default dikembalikan kecuali Anda terlebih dahulu memperbaruinya secara eksplisit menggunakan salah satu fungsi yang disebutkan, atau dengan panggilan ke tzset
. Selain itu, jika TZ
variabel lingkungan diatur, itu lebih diutamakan daripada nama zona waktu yang dilaporkan oleh OS. Bahkan dalam hal ini, salah satu fungsi yang disebutkan di atas harus dipanggil sebelum _get_tzname
dipanggil atau nilai zona waktu default akan dikembalikan. Untuk informasi selengkapnya tentang TZ
variabel lingkungan dan CRT, lihat _tzset
.
Peringatan
String zona waktu tidak dijamin sama antara rilis OS. Nama zona waktu resmi dapat dan melakukan perubahan.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Contoh
Sampel ini memanggil _get_tzname
untuk mendapatkan ukuran buffer yang diperlukan untuk menampilkan nama zona waktu standar Daylight saat ini, mengalokasikan buffer ukuran tersebut, memanggil _get_tzname
lagi untuk memuat nama di buffer, dan mencetaknya ke konsol.
Ini juga memanggil _tzset()
untuk menyebabkan OS memperbarui informasi zona waktu sebelum memanggil _get_tzname()
. Jika tidak, nilai default digunakan.
// 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;
}
Hasil
The current Daylight standard time zone name is Pacific Daylight Time.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
_get_tzname |
<time.h> |
Untuk informasi selengkapnya, lihat Kompatibilitas.
Baca juga
Manajemen waktu
errno
, _doserrno
, _sys_errlist
, dan _sys_nerr
_get_daylight
_get_dstbias
_get_timezone
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk