_mkgmtime, _mkgmtime32, _mkgmtime64
convertit une heure UTC représentée par tmstruct à une heure UTC représentée par un type d' time_t .
time_t _mkgmtime(
struct tm* timeptr
);
__time32_t _mkgmtime32(
struct tm* timeptr
);
__time64_t _mkgmtime64(
struct tm* timeptr
);
Paramètres
- timeptr
Un pointeur à l'heure UTC en tant que structtm de convertir.
Valeur de retour
Une valeur de type __time32_t ou __time64_t représentant le nombre de secondes s'est écoulé depuis minuit, le 1er janvier 1970, du temps universel (UTC).Si la date est hors limites (consultez la section Notes) ou l'entrée ne peut pas être interprétée comme une heure non valide, la valeur de retour est – 1.
Notes
Les fonctions d' _mkgmtime32 et d' _mkgmtime64 convertissent une heure UTC à un type d' __time32_t ou d' __time64_t qui représente l'heure UTC dans.Pour convertir une heure locale en heure UTC, à l'utilisation mktime, à l' _mktime32, et à l' _mktime64 à la place.
_mkgmtime est une fonction inline qui correspond à _mkgmtime64, et time_t équivaut à __time64_t.Si vous devez forcer le compilateur à interpréter time_tcomme time_t32 bits ancien, vous pouvez définir _USE_32BIT_TIME_T.Cela n'est pas recommandé parce que votre application peut échouer après le 19 janvier 2038 (la plage maximale d' time_t32 bits), et il ne lui permet pas du tout sur les plateformes 64 bits.
La structure de temps est passée sera modifiée comme suit, de la même façon qu'elles sont modifiées avec les fonctions d' _mktime : les champs d' tm_wday et d' tm_yday sont définis à de nouvelles valeurs en fonction de les valeurs d' tm_mday et d' tm_year.En spécifiant l'heure de structure d' tm , définissez le champ d' tm_isdst :
Zéro (0) pour indiquer que l'heure d'hiver est appliquée.
Une valeur supérieure à 0 pour indiquer que l'heure d'été est appliquée.
Une valeur inférieure de zéro pour avoir le calcul de code de la bibliothèque Runtime C si l'heure d'hiver ou l'heure d'été est appliquée.
La bibliothèque Runtime C utilise la variable d'environnement à partir de la t-z pour déterminer l'heure d'été correcte.Si la t-z n'est pas définie, le système d'exploitation est interrogé pour obtenir le comportement local correct heure d'été.tm_isdst est un champ obligatoire.Si sa valeur, sa valeur est non définie et la valeur de retour d' mktime est imprévisible.
La plage de la fonction d' _mkgmtime32 sera minuit, le 1er janvier 1970, l'heure UTC au 19 janvier, à 3h14 : 07, 2038, l'heure UTC.La chaîne d' _mkgmtime64 sera minuit, le 1er janvier 1970, l'heure UTC et 23h59 : 59, le 31 décembre, 3000, l'heure UTC.Une date hors limites trouve une valeur de retour (de 1.la chaîne d' _mkgmtime dépend de si _USE_32BIT_TIME_T est défini.Si a la valeur (valeur par défaut) la plage est celle d' _mkgmtime64; sinon, la plage est limitée à la chaîne de 32 bits à _mkgmtime32.
Notez qu' gmtime et localtime utilisent une mémoire tampon allouée de manière statique unique pour la conversion.si vous fournissez cette mémoire tampon à mkgmtime, le contenu précédent est détruit.
Exemple
// 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 );
}
Résultat de l'exemple
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 de code suivant montre comment la structure incomplète est terminée avec des valeurs calculées du jour de la semaine et du jour 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 );
}
Sortie
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
Référence
gmtime_s, _gmtime32_s, _gmtime64_s