localtime_s
, , _localtime32_s
_localtime64_s
time_t
Mengonversi nilai waktu menjadi tm
struktur, dan mengoreksi untuk zona waktu lokal. Fungsi-fungsi ini adalah versi localtime
, _localtime32
, _localtime64
dengan peningkatan keamanan seperti yang dijelaskan dalam Fitur keamanan di CRT.
Sintaks
errno_t localtime_s(
struct tm* const tmDest,
time_t const* const sourceTime
);
errno_t _localtime32_s(
struct tm* tmDest,
__time32_t const* sourceTime
);
errno_t _localtime64_s(
struct tm* tmDest,
__time64_t const* sourceTime
);
Parameter
tmDest
Penunjuk ke struktur waktu yang akan diisi.
sourceTime
Arahkan ke waktu tersimpan.
Nilai hasil
Nol jika berhasil. Nilai yang dikembalikan adalah kode kesalahan jika ada kegagalan. Kode kesalahan didefinisikan dalam Errno.h
. Untuk daftar kesalahan ini, lihat errno
.
Kondisi kesalahan
tmDest |
sourceTime |
Nilai hasil | Nilai dalam tmDest |
Memanggil handler parameter yang tidak valid |
---|---|---|---|---|
NULL |
any | EINVAL |
Tidak dimodifikasi | Ya |
Bukan NULL (menunjuk ke memori yang valid) |
NULL |
EINVAL |
Semua bidang diatur ke -1 | Ya |
Bukan NULL (menunjuk ke memori yang valid) |
kurang dari 0 atau lebih besar dari _MAX__TIME64_T |
EINVAL |
Semua bidang diatur ke -1 | No |
Dua kondisi kesalahan pertama memanggil handler parameter yang tidak valid, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi-fungsi ini diatur errno
ke EINVAL
dan mengembalikan EINVAL
.
Keterangan
Fungsi ini localtime_s
mengonversi waktu yang disimpan sebagai time_t
nilai dan menyimpan hasilnya dalam struktur jenis tm
. Nilai time_t
sourceTime
mewakili detik yang berlalu sejak tengah malam (00:00:00), 1 Januari 1970, UTC. Nilai ini sering diperoleh dari time
fungsi .
localtime_s
mengoreksi zona waktu lokal jika pengguna pertama kali mengatur variabel TZ
lingkungan global . Ketika TZ
diatur, tiga variabel lingkungan lainnya (_timezone
, , _daylight
dan _tzname
) secara otomatis diatur juga. TZ
Jika variabel tidak diatur, localtime_s
upaya untuk menggunakan informasi zona waktu yang ditentukan dalam aplikasi Tanggal/Waktu di Panel Kontrol. Jika informasi ini tidak dapat diperoleh, PST8PDT, yang menandakan zona waktu Pasifik, digunakan secara default. Lihat _tzset
untuk deskripsi variabel ini. TZ
adalah ekstensi Microsoft dan bukan bagian dari definisi standar ANSI dari localtime
.
Catatan
Lingkungan target harus mencoba menentukan apakah waktu musim panas berlaku.
_localtime64_s
, yang menggunakan __time64_t
struktur, memungkinkan tanggal dinyatakan hingga 23:59:59, 18 Januari 3001, waktu universal terkoordinasi (UTC), sedangkan _localtime32_s
mewakili tanggal hingga 23:59:59 18 Januari 2038, UTC.
localtime_s
adalah fungsi sebaris yang mengevaluasi ke _localtime64_s
, dan time_t
setara dengan __time64_t
. Jika Anda perlu memaksa pengkompilasi untuk menafsirkan time_t
sebagai 32-bit time_t
lama, Anda dapat menentukan _USE_32BIT_TIME_T
, yang menyebabkan localtime_s
evaluasi ke _localtime32_s
. Kami tidak merekomendasikan _USE_32BIT_TIME_T
, karena aplikasi Anda mungkin gagal setelah 18 Januari 2038, dan tidak diizinkan pada platform 64-bit.
Bidang jenis tm
struktur menyimpan nilai berikut, yang masing-masing adalah int
.
Bidang | Deskripsi |
---|---|
tm_sec |
Detik demi menit (0 - 59). |
tm_min |
Menit demi jam (0 - 59). |
tm_hour |
Jam sejak tengah malam (0 - 23). |
tm_mday |
Hari dalam sebulan (1 - 31). |
tm_mon |
Bulan (0 - 11; Januari = 0). |
tm_year |
Tahun (tahun berjalan minus 1900). |
tm_wday |
Hari dalam seminggu (0 - 6; Minggu = 0). |
tm_yday |
Hari dalam setahun (0 - 365; 1 Januari = 0). |
tm_isdst |
Nilai positif jika waktu musim panas berlaku; 0 jika waktu musim panas tidak berlaku; nilai negatif jika status waktu musim panas tidak diketahui. |
TZ
Jika variabel lingkungan diatur, pustaka run-time C mengasumsikan aturan yang sesuai dengan Amerika Serikat untuk menerapkan perhitungan waktu musim panas (DST).
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Persyaratan
Rutin | Header C yang diperlukan | Header C++ yang diperlukan |
---|---|---|
localtime_s , , _localtime32_s _localtime64_s |
<time.h> |
<ctime> atau <time.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// crt_localtime_s.c
// This program uses _time64 to get the current time
// and then uses _localtime64_s() to convert this time to a structure
// representing the local time. The program converts the result
// from a 24-hour clock to a 12-hour clock and determines the
// proper extension (AM or PM).
#include <stdio.h>
#include <string.h>
#include <time.h>
int main( void )
{
struct tm newtime;
char am_pm[] = "AM";
__time64_t long_time;
char timebuf[26];
errno_t err;
// Get time as 64-bit integer.
_time64( &long_time );
// Convert to local time.
err = _localtime64_s( &newtime, &long_time );
if (err)
{
printf("Invalid argument to _localtime64_s.");
exit(1);
}
if( newtime.tm_hour > 12 ) // Set up extension.
strcpy_s( am_pm, sizeof(am_pm), "PM" );
if( newtime.tm_hour > 12 ) // Convert from 24-hour
newtime.tm_hour -= 12; // to 12-hour clock.
if( newtime.tm_hour == 0 ) // Set hour to 12 if midnight.
newtime.tm_hour = 12;
// Convert to an ASCII representation.
err = asctime_s(timebuf, 26, &newtime);
if (err)
{
printf("Invalid argument to asctime_s.");
exit(1);
}
printf( "%.19s %s\n", timebuf, am_pm );
}
Fri Apr 25 01:19:27 PM
Lihat juga
Manajemen waktu
asctime_s
, _wasctime_s
ctime
, , _ctime32
_ctime64
, _wctime
, , _wctime32
,_wctime64
_ftime
, , _ftime32
_ftime64
gmtime_s
, , _gmtime32_s
_gmtime64_s
localtime
, , _localtime32
_localtime64
time
, , _time32
_time64
_tzset