Bagikan melalui


asctime_s, _wasctime_s

tm Mengonversi struktur waktu menjadi string karakter. Fungsi-fungsi ini adalah versi asctime, _wasctime dengan peningkatan keamanan seperti yang dijelaskan dalam Fitur keamanan di CRT.

Sintaks

errno_t asctime_s(
   char* buffer,
   size_t numberOfElements,
   const struct tm *tmSource
);
errno_t _wasctime_s(
   wchar_t* buffer,
   size_t numberOfElements
   const struct tm *tmSource
);
template <size_t size>
errno_t asctime_s(
   char (&buffer)[size],
   const struct tm *tmSource
); // C++ only
template <size_t size>
errno_t _wasctime_s(
   wchar_t (&buffer)[size],
   const struct tm *tmSource
); // C++ only

Parameter

buffer
Penunjuk ke buffer untuk menyimpan hasil string karakter. Fungsi ini mengasumsikan penunjuk ke lokasi memori yang valid dengan ukuran yang ditentukan oleh numberOfElements.

numberOfElements
Ukuran buffer yang digunakan untuk menyimpan hasilnya.

tmSource
Struktur waktu/tanggal. Fungsi ini mengasumsikan penunjuk ke objek yang valid struct tm .

Nilai hasil

Nol jika berhasil. Jika ada kegagalan, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, nilai yang dikembalikan adalah kode kesalahan. Kode kesalahan didefinisikan dalam ERRNO.H. Untuk informasi selengkapnya, lihat errno konstanta. Kode kesalahan aktual yang dikembalikan untuk setiap kondisi kesalahan diperlihatkan dalam tabel berikut.

Kondisi kesalahan

buffer numberOfElements tmSource Tampilkan Nilai dalam buffer
NULL Apa pun Apa pun EINVAL Tidak dimodifikasi
Bukan NULL (menunjuk ke memori yang valid) 0 Mana pun EINVAL Tidak dimodifikasi
Tidak NULL 0<numberOfElements< 26 Mana pun EINVAL String kosong
Tidak NULL >= 26 NULL EINVAL String kosong
Tidak NULL >= 26 Struktur waktu tidak valid atau nilai di luar rentang untuk komponen waktu EINVAL String kosong

Catatan

Kondisi kesalahan untuk wasctime_s mirip asctime_s dengan pengecualian bahwa batas ukuran diukur dengan kata-kata.

Keterangan

Fungsi ini asctime mengonversi waktu yang disimpan sebagai struktur menjadi string karakter. Nilai tmSource biasanya diperoleh dari panggilan ke gmtime atau localtime. Kedua fungsi dapat digunakan untuk mengisi struktur, seperti yang tm didefinisikan dalam TIME.H.

anggota timeptr Nilai
tm_hour Jam sejak tengah malam (0-23)
tm_isdst Positif jika waktu musim panas berlaku; 0 jika waktu musim panas tidak berlaku; negatif jika status waktu musim panas tidak diketahui. Pustaka run-time C mengasumsikan aturan Amerika Serikat untuk menerapkan perhitungan Daylight Saving Time (DST).
tm_mday Hari dalam sebulan (1-31)
tm_min Menit demi jam (0-59)
tm_mon Bulan (0-11; Januari = 0)
tm_sec Detik demi menit (0-59)
tm_wday Hari dalam seminggu (0-6; Minggu = 0)
tm_yday Hari dalam setahun (0-365; 1 Januari = 0)
tm_year Tahun (tahun berjalan minus 1900)

String karakter yang dikonversi juga disesuaikan sesuai dengan pengaturan zona waktu lokal. Untuk informasi tentang mengonfigurasi waktu lokal, lihat fungsi , , , _time64_time32_ftime, _ftime32, _ftime64danlocaltime_s , _localtime32_s, . _localtime64_stime Untuk informasi tentang menentukan lingkungan zona waktu dan variabel global, lihat _tzset.

Hasil string yang dihasilkan dengan asctime_s berisi tepat 26 karakter dan memiliki formulir Wed Jan 2 02:03:55 1980\n\0. Jam 24 jam digunakan. Semua bidang memiliki lebar konstanta. Karakter baris baru dan karakter null menempati dua posisi terakhir string. Nilai yang diteruskan sebagai numberOfElements harus setidaknya ukuran ini. Jika kurang, kode kesalahan, EINVAL, akan dikembalikan.

_wasctime_s adalah versi karakter luas dari asctime_s. _wasctime_s dan asctime_s berulah secara identik jika tidak.

Versi pustaka debug dari fungsi-fungsi ini terlebih dahulu mengisi buffer dengan 0xFE. Untuk menonaktifkan perilaku ini, gunakan _CrtSetDebugFillThreshold.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Pemetaan rutin teks generik

TCHAR. Rutinitas H _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_tasctime_s asctime_s asctime_s _wasctime_s

Di C++, menggunakan fungsi-fungsi ini disederhanakan oleh kelebihan beban templat; kelebihan beban dapat menyimpulkan panjang buffer secara otomatis, menghilangkan kebutuhan untuk menentukan argumen ukuran. Untuk informasi selengkapnya, lihat Mengamankan kelebihan beban templat.

Persyaratan

Rutin Header yang diperlukan
asctime_s <time.h>
_wasctime_s <time.h> atau <wchar.h>

Keamanan

Jika penunjuk buffer tidak NULL dan penunjuk tidak menunjuk ke buffer yang valid, fungsi akan menimpa apa pun yang ada di lokasi. Kesalahan ini juga dapat mengakibatkan pelanggaran akses.

Overrun buffer dapat terjadi jika argumen ukuran yang diteruskan lebih besar dari ukuran buffer yang sebenarnya.

Contoh

Program ini menempatkan waktu sistem dalam bilangan bulat aclockpanjang , menerjemahkannya ke dalam struktur newtime, lalu mengonversinya menjadi bentuk string untuk output, menggunakan asctime_s fungsi .

// crt_asctime_s.c
#include <time.h>
#include <stdio.h>

struct tm newtime;
__time32_t aclock;

int main( void )
{
   char buffer[32];
   errno_t errNum;
   _time32( &aclock );   // Get time in seconds.
   _localtime32_s( &newtime, &aclock );   // Convert time to struct tm form.

   // Print local time as a string.

   errNum = asctime_s(buffer, 32, &newtime);
   if (errNum)
   {
       printf("Error code: %d", (int)errNum);
       return 1;
   }
   printf( "Current date and time: %s", buffer );
   return 0;
}
Current date and time: Wed May 14 15:30:17 2003

Baca juga

Manajemen waktu
ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
_ftime, _ftime32, _ftime64
gmtime_s, _gmtime32_s, _gmtime64_s
localtime_s, _localtime32_s, _localtime64_s
time, _time32, _time64
_tzset