Partager via


_mkgmtime, , _mkgmtime32_mkgmtime64

Convertit une heure UTC représentée par un struct tm en heure UTC représentée par un type time_t.

Syntaxe

time_t _mkgmtime(
   struct tm* timeptr
);
__time32_t _mkgmtime32(
   struct tm* timeptr
);
__time64_t _mkgmtime64(
   struct tm* timeptr
);

Paramètres

timeptr
Pointeur désignant l’heure UTC sous forme struct tm à convertir.

Valeur retournée

Quantité de type __time32_t ou __time64_t qui représente le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit, en temps universel coordonné (UTC). Si la date est hors plage (voir la section Remarques) ou si l’entrée ne peut pas être interprétée comme une heure valide, la valeur de retour est -1.

Notes

Les fonctions _mkgmtime32 et _mkgmtime64 convertissent une heure UTC en un type __time32_t ou __time64_t qui représente l’heure en UTC. Pour convertir une heure locale en heure UTC, utilisez mktime, _mktime32 et _mktime64 à la place.

_mkgmtime est une fonction inline qui prend la valeur _mkgmtime64, tandis que time_t équivaut à __time64_t. Si vous devez forcer le compilateur à interpréter time_t comme ancien time_t32 bits, vous pouvez définir _USE_32BIT_TIME_T. Nous ne le recommandons pas, car votre application peut échouer après le 18 janvier 2038, la plage maximale d’un 32 bits time_t. Il n’est pas autorisé du tout sur les plateformes 64 bits.

La structure de temps passée est modifiée comme suit, de la même façon qu’elle est modifiée par les _mktime fonctions : les tm_wday champs et tm_yday les champs sont définis sur de nouvelles valeurs en fonction des valeurs de tm_mday et tm_year. Étant donné que l’heure est supposée être UTC, le tm_isdst champ est ignoré.

La plage de la fonction _mkgmtime32 va du 1er janvier 1970 à minuit, heure UTC, au 18 janvier 2038 à 23:59:59, heure UTC. La plage de _mkgmtime64 va du 1er janvier 1970 à minuit, heure UTC, au 31 décembre 3000 à 23:59:59, heure UTC. Une date hors plage entraîne une valeur de retour de -1. La plage de _mkgmtime varie selon que _USE_32BIT_TIME_T est défini ou non. Lorsqu’elle n’est pas définie, qui est la valeur par défaut, la plage est la même que _mkgmtime64. Sinon, la plage est limitée à la plage 32 bits de _mkgmtime32.

Utilisez à localtime la fois gmtime une mémoire tampon statique commune pour la conversion. Si vous fournissez cette mémoire tampon à _mkgmtime, le contenu précédent est détruit.

Exemples

// 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

L’exemple suivant montre comment la structure incomplète est remplie par _mkgmtime. Il calcule les valeurs du jour de la semaine et de l’année.

// 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

Voir aussi

Gestion des horaires
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