_mkgmtime
, , _mkgmtime32
_mkgmtime64
Mengonversi waktu UTC yang diwakili oleh ke struct tm
waktu UTC yang diwakili oleh jenis time_t
.
Sintaks
time_t _mkgmtime(
struct tm* timeptr
);
__time32_t _mkgmtime32(
struct tm* timeptr
);
__time64_t _mkgmtime64(
struct tm* timeptr
);
Parameter
timeptr
Penunjuk ke waktu UTC sebagai untuk struct tm
mengonversi.
Nilai hasil
Kuantitas jenis __time32_t
atau __time64_t
mewakili jumlah detik yang berlalu sejak tengah malam, 1 Januari 1970, dalam Waktu Universal Terkoordinasi (UTC). Jika tanggal berada di luar rentang (lihat bagian Keterangan) atau input tidak dapat ditafsirkan sebagai waktu yang valid, nilai yang dikembalikan adalah -1.
Keterangan
Fungsi _mkgmtime32
dan _mkgmtime64
mengonversi waktu UTC menjadi atau __time64_t
jenis yang __time32_t
mewakili waktu dalam UTC. Untuk mengonversi waktu lokal ke waktu UTC, gunakan mktime
, _mktime32
, dan _mktime64
sebagai gantinya.
_mkgmtime
adalah fungsi sebaris yang mengevaluasi ke _mkgmtime64
, 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
. Kami tidak merekomendasikannya, karena aplikasi Anda mungkin gagal setelah 18 Januari 2038, rentang maksimum 32-bit time_t
. Ini tidak diizinkan sama sekali pada platform 64-bit.
Struktur waktu yang diteruskan diubah sebagai berikut, dengan cara yang sama seperti yang diubah oleh _mktime
fungsi: tm_wday
bidang dan tm_yday
diatur ke nilai baru berdasarkan nilai tm_mday
dan tm_year
. Karena waktu diasumsikan sebagai UTC, tm_isdst
bidang diabaikan.
Rentang _mkgmtime32
fungsinya adalah dari tengah malam, 1 Januari 1970, UTC hingga 23:59:59 18 Januari 2038, UTC. Kisarannya _mkgmtime64
adalah dari tengah malam, 1 Januari 1970, UTC hingga 23:59:59, 31 Desember 3000, UTC. Tanggal di luar rentang menghasilkan nilai pengembalian -1. Rentang _mkgmtime
tergantung pada apakah _USE_32BIT_TIME_T
ditentukan. Ketika tidak didefinisikan, yang merupakan default, rentangnya sama dengan _mkgmtime64
. Jika tidak, rentangnya terbatas pada rentang 32-bit ._mkgmtime32
Baik gmtime
dan localtime
gunakan buffer statis umum untuk konversi. Jika Anda menyediakan buffer ini ke _mkgmtime
, konten sebelumnya akan dihancurkan.
Contoh
// crt_mkgmtime.c
#include <stdio.h>
#include <time.h>
int main()
{
struct tm t1, t2;
time_t now, mytime, gmtime;
char buff[30];
time( & now );
_localtime64_s( &t1, &now );
_gmtime64_s( &t2, &now );
mytime = mktime(&t1);
gmtime = _mkgmtime(&t2);
printf("Seconds since midnight, January 1, 1970\n");
printf("My time: %I64d\nGM time (UTC): %I64d\n\n", mytime, gmtime);
/* Use asctime_s to display these times. */
_localtime64_s( &t1, &mytime );
asctime_s( buff, sizeof(buff), &t1 );
printf( "Local Time: %s\n", buff );
_gmtime64_s( &t2, &gmtime );
asctime_s( buff, sizeof(buff), &t2 );
printf( "Greenwich Mean Time: %s\n", buff );
}
Seconds since midnight, January 1, 1970
My time: 1171588492
GM time (UTC): 1171588492
Local Time: Thu Feb 15 17:14:52 2007
Greenwich Mean Time: Fri Feb 16 01:14:52 2007
Contoh berikut menunjukkan bagaimana struktur yang tidak lengkap diisi oleh _mkgmtime
. Ini menghitung nilai untuk hari dalam seminggu dan tahun.
// crt_mkgmtime2.c
#include <stdio.h>
#include <time.h>
#include <memory.h>
int main()
{
struct tm t1, t2;
time_t gmtime;
char buff[30];
memset(&t1, 0, sizeof(struct tm));
memset(&t2, 0, sizeof(struct tm));
t1.tm_mon = 1;
t1.tm_isdst = 0;
t1.tm_year = 103;
t1.tm_mday = 12;
// The day of the week and year will be incorrect in the output here.
asctime_s( buff, sizeof(buff), &t1);
printf("Before calling _mkgmtime, t1 = %s t.tm_yday = %d\n",
buff, t1.tm_yday );
gmtime = _mkgmtime(&t1);
// The correct day of the week and year were determined.
asctime_s( buff, sizeof(buff), &t1);
printf("After calling _mkgmtime, t1 = %s t.tm_yday = %d\n",
buff, t1.tm_yday );
}
Before calling _mkgmtime, t1 = Sun Feb 12 00:00:00 2003
t.tm_yday = 0
After calling _mkgmtime, t1 = Wed Feb 12 00:00:00 2003
t.tm_yday = 42
Lihat juga
Manajemen waktu
asctime
, _wasctime
asctime_s
, _wasctime_s
gmtime
, , _gmtime32
_gmtime64
gmtime_s
, , _gmtime32_s
_gmtime64_s
localtime_s
, , _localtime32_s
_localtime64_s
mktime
, , _mktime32
_mktime64
time
, , _time32
_time64