_mkgmtime
, _mkgmtime32
, _mkgmtime64
ile temsil edilen UTC saatini bir türle struct tm
time_t
temsil edilen UTC saatine dönüştürür.
Sözdizimi
time_t _mkgmtime(
struct tm* timeptr
);
__time32_t _mkgmtime32(
struct tm* timeptr
);
__time64_t _mkgmtime64(
struct tm* timeptr
);
Parametreler
timeptr
Dönüştürülecek utc saati işaretçisi struct tm
.
Dönüş değeri
Eşgüdümlü Evrensel Saat (UTC) cinsinden 1 Ocak 1970 gece yarısından bu yana geçen saniye sayısını gösteren veya __time64_t
türünde __time32_t
bir miktar. Tarih aralık dışındaysa (Açıklamalar bölümüne bakın) veya giriş geçerli bir saat olarak yorumlanamazsa, dönüş değeri -1 olur.
Açıklamalar
_mkgmtime32
ve _mkgmtime64
işlevleri UTC saatini UTC cinsinden saati temsil eden bir __time32_t
veya __time64_t
türüne dönüştürür. Yerel saati UTC saatine dönüştürmek için , mktime
_mktime32
ve _mktime64
kullanın.
_mkgmtime
, olarak değerlendirilen _mkgmtime64
ve time_t
ile eşdeğer __time64_t
olan satır içi bir işlevdir. Derleyiciyi eski 32 bit time_t
olarak yorumlamaya time_t
zorlamanız gerekiyorsa tanımlayabilirsiniz_USE_32BIT_TIME_T
. Uygulamanız 18 Ocak 2038'in ardından 32 bitlik time_t
maksimum aralıkta başarısız olabileceğinden bunu önermiyoruz. 64 bit platformlarda buna hiç izin verilmez.
geçirilen zaman yapısı, işlevler tarafından _mktime
değiştirildiği şekilde aşağıdaki gibi değiştirilir: tm_wday
ve tm_yday
alanları ve tm_year
değerlerine tm_mday
göre yeni değerlere ayarlanır. Saatin UTC olduğu varsayıldığı için alan tm_isdst
yoksayılır.
İşlevin _mkgmtime32
aralığı gece yarısı, 1 Ocak 1970, UTC ile 23:59:59 Arasında 18 Ocak 2038, UTC'dir. Aralığı _mkgmtime64
gece yarısı, 1 Ocak 1970, UTC ile 23:59:59, 31 Aralık 3000, UTC arasındadır. Aralık dışı bir tarih, -1 dönüş değerine neden olur. aralığı tanımlanıp tanımlanmadığına _mkgmtime
_USE_32BIT_TIME_T
bağlıdır. Varsayılan değer olan tanımlanmadığında, aralık ile _mkgmtime64
aynıdır. Aksi takdirde, aralık 32 bit aralığıyla _mkgmtime32
sınırlıdır.
localtime
Hem hem de gmtime
dönüştürme için ortak bir statik arabellek kullanın. Bu arabelleği 'ye _mkgmtime
tedarik ederseniz, önceki içerik yok edilir.
Örnekler
// 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
Aşağıdaki örnek, tamamlanmamış yapının tarafından _mkgmtime
nasıl doldurulduğunu gösterir. Hem haftanın günü hem de yılın değerlerini hesaplar.
// 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
Ayrıca bkz.
Zaman yönetimi
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