Aracılığıyla paylaş


_mkgmtime, _mkgmtime32, _mkgmtime64

ile temsil edilen UTC saatini bir türle struct tmtime_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_mktime32ve _mktime64 kullanın.

_mkgmtime , olarak değerlendirilen _mkgmtime64ve time_t ile eşdeğer __time64_tolan satır içi bir işlevdir. Derleyiciyi eski 32 bit time_tolarak yorumlamaya time_t zorlamanız gerekiyorsa tanımlayabilirsiniz_USE_32BIT_TIME_T. Uygulamanız 18 Ocak 2038'in ardından 32 bitlik time_tmaksimum 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_yeardeğ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 _mkgmtime64aynıdır. Aksi takdirde, aralık 32 bit aralığıyla _mkgmtime32sı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 _mkgmtimetedarik 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 _mkgmtimenası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