_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 errnoAtur 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 timeZoneNameNULL, 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_smktime, 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