Share via


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_wdaytimeptr dan tm_yday struktur diabaikan, dan nilai asli komponen lain tidak dibatasi untuk rentang normalnya.

mktime adalah fungsi sebaris yang setara _mktime64dengan , 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, , gmtimeatau 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

Baca juga

Manajemen waktu
asctime, _wasctime
gmtime, _gmtime32, _gmtime64
localtime, _localtime32, _localtime64
_mkgmtime, _mkgmtime32, _mkgmtime64
time, _time32, _time64