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
, _ftime64
danlocaltime_s
, _localtime32_s
, . _localtime64_s
time
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 aclock
panjang , 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
Lihat 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