mktime
, , _mktime32
_mktime64
Mengonversi waktu lokal menjadi nilai kalender.
Sintaks
time_t mktime(
struct tm *timeptr
);
__time32_t _mktime32(
struct tm *timeptr
);
__time64_t _mktime64(
struct tm *timeptr
);
Parameter
timeptr
Struktur penunjuk ke waktu; lihat asctime
.
Nilai hasil
_mktime32
mengembalikan waktu kalender yang ditentukan yang dikodekan sebagai nilai jenis time_t
. Jika timeptr
mereferensikan tanggal sebelum tengah malam, 1 Januari 1970, atau jika waktu kalender tidak dapat diwakili, _mktime32
mengembalikan -1 cast ke jenis time_t
. Saat menggunakan _mktime32
dan jika timeptr
mereferensikan tanggal setelah 23:59:59 18 Januari 2038, Waktu Universal Terkoordinasi (UTC), itu akan mengembalikan -1 cast ke jenis time_t
.
_mktime64
akan mengembalikan -1 cast untuk mengetik __time64_t
jika timeptr
mereferensikan tanggal setelah 23:59:59, 31 Desember 3000, UTC.
Keterangan
Fungsi mktime
, dan _mktime64
_mktime32
mengonversi struktur waktu yang disediakan (mungkin tidak lengkap) yang ditujukan ke timeptr
struktur yang sepenuhnya ditentukan dengan nilai yang dinormalisasi dan kemudian mengonversinya menjadi time_t
nilai waktu kalender. Waktu yang dikonversi memiliki pengodean yang sama dengan nilai yang dikembalikan oleh time
fungsi. Nilai asli komponen tm_wday
timeptr
dan tm_yday
struktur diabaikan, dan nilai asli komponen lain tidak dibatasi untuk rentang normalnya.
mktime
adalah fungsi sebaris yang setara _mktime64
dengan , kecuali _USE_32BIT_TIME_T
didefinisikan, dalam hal ini setara dengan _mktime32
.
Setelah penyesuaian UTC, _mktime32
menangani tanggal dari tengah malam, 1 Januari 1970, hingga 23:59:59 18 Januari 2038, UTC. _mktime64
menangani tanggal dari tengah malam, 1 Januari 1970 hingga 23:59:59, 31 Desember 3000. Penyesuaian ini dapat menyebabkan fungsi-fungsi ini mengembalikan -1 (ditransmisikan ke time_t
, __time32_t
atau __time64_t
) meskipun tanggal yang Anda tentukan berada dalam rentang. Misalnya, jika Anda berada di Kairo, Mesir, yang dua jam lebih awal dari UTC, dua jam pertama-tama akan dikurangi dari tanggal yang Anda tentukan di timeptr
; pengurangan sekarang dapat menempatkan tanggal Anda di luar rentang.
Fungsi-fungsi ini dapat digunakan untuk memvalidasi dan mengisi tm
struktur. Jika berhasil, fungsi-fungsi ini mengatur nilai tm_wday
dan tm_yday
yang sesuai dan mengatur komponen lain untuk mewakili waktu kalender yang ditentukan, tetapi dengan nilainya dipaksa ke rentang normal. Nilai tm_mday
akhir tidak diatur hingga tm_mon
dan tm_year
ditentukan. Saat menentukan tm
waktu struktur, atur bidang ke tm_isdst
:
Nol (0) untuk menunjukkan bahwa waktu standar berlaku.
Nilai yang lebih besar dari 0 untuk menunjukkan bahwa waktu musim panas berlaku.
Nilai kurang dari nol agar kode pustaka run-time C menghitung apakah waktu standar atau waktu musim panas berlaku.
Pustaka run-time C akan menentukan perilaku waktu musim panas yang menghemat dari TZ
variabel lingkungan. Jika TZ
tidak diatur, panggilan GetTimeZoneInformation
API Win32 digunakan untuk mendapatkan informasi waktu musim panas dari sistem operasi. Jika panggilan gagal, pustaka mengasumsikan aturan Amerika Serikat untuk menerapkan perhitungan waktu musim panas digunakan. tm_isdst
adalah bidang yang diperlukan. Jika tidak diatur, nilainya tidak terdefinisi dan nilai pengembalian dari fungsi-fungsi ini tidak dapat diprediksi. Jika timeptr
menunjuk ke struktur yang tm
dikembalikan oleh panggilan sebelumnya ke asctime
, , gmtime
atau localtime
(atau varian fungsi-fungsi ini), tm_isdst
bidang berisi nilai yang benar.
Fungsi gmtime
dan localtime
(dan _gmtime32
, _gmtime64
, _localtime32
, dan _localtime64
) menggunakan buffer tunggal per utas untuk konversi. Jika Anda menyediakan buffer ini ke mktime
, _mktime32
atau _mktime64
, konten sebelumnya akan dihancurkan.
Fungsi-fungsi ini memvalidasi parameternya. Jika timeptr
adalah penunjuk null, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi mengembalikan -1 dan diatur errno
ke EINVAL
.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
mktime |
<time.h> |
_mktime32 |
<time.h> |
_mktime64 |
<time.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Pustaka
Semua versi pustaka run-time C.
Contoh
// crt_mktime.c
/* The example takes a number of days
* as input and returns the time, the current
* date, and the specified number of days.
*/
#include <time.h>
#include <stdio.h>
int main( void )
{
struct tm when;
__time64_t now, result;
int days;
char buff[80];
time( &now );
_localtime64_s( &when, &now );
asctime_s( buff, sizeof(buff), &when );
printf( "Current time is %s\n", buff );
days = 20;
when.tm_mday = when.tm_mday + days;
if( (result = mktime( &when )) != (time_t)-1 ) {
asctime_s( buff, sizeof(buff), &when );
printf( "In %d days the time will be %s\n", days, buff );
} else
perror( "mktime failed" );
}
Sampel output
Current time is Fri Apr 25 13:34:07 2003
In 20 days the time will be Thu May 15 13:34:07 2003
Lihat juga
Manajemen waktu
asctime
, _wasctime
gmtime
, , _gmtime32
_gmtime64
localtime
, , _localtime32
_localtime64
_mkgmtime
, , _mkgmtime32
_mkgmtime64
time
, , _time32
_time64