Partager via


gmtime_s, _gmtime32_s, _gmtime64_s

Convertit une valeur temporelle en une structure. Il s'agit de versions de _gmtime32, _gmtime64 avec des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le CRT.

errno_t gmtime_s(
   struct tm* _tm,
   const __time_t* time
);
errno_t _gmtime32_s(
   struct tm* _tm,
   const __time32_t* time
);
errno_t _gmtime64_s(
   struct tm* _tm,
   const __time64_t* time 
);

Paramètres

  • _tm
    Pointeur vers une structure tm. Les champs de la structure retournée conservent la valeur évaluée de l'argument timer à l'heure UTC plutôt qu'à l'heure locale.

  • time
    Pointeur vers le l'horaire stockée. Le temps est représenté sous la forme de secondes écoulées depuis minuit (0h00 : 00), le 1er janvier 1970, Coordinated Universal Time (UTC).

Valeur de retour

Zéro en cas de réussite. La valeur de retour est un code d'erreur en cas de échec. Les codes d'erreur sont définis dans Errno.h ; pour une liste de ces erreurs, consultez l'errno.

Conditions d'erreur

_tm

time

Return

Valeur dans _tm

NULL

any

EINVAL

Non modifié

Non NULL (pointe vers la mémoire valide)

NULL

EINVAL

Tous les champs définis à -1.

Non NULL

< 0

EINVAL

Tous les champs définis à -1.

Dans le cas des deux premières conditions d'erreur, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions définissent errno à la valeur EINVAL et retournent EINVAL.

Notes

La fonction _gmtime32_s détaille la valeur du time et l'enregistre dans une structure allouée statiquement de type tm, définie dans Time.h. L'adresse de la structure est transmise à _tm. La valeur de time est généralement obtenue à partir d'un appel à la fonction time.

Notes

L'environnement cible doit tenter de déterminer si les enregistrements de l'heure du jour est activé.La bibliothèque Runtime C suppose l'utilisation des règles des États-Unis pour implémenter le calcul de l'heure d'été.

Chaque champs structurel est de type int, comme indiqué dans le tableau suivant.

  • tm_sec
    Les secondes après les minutes (0 à 59).

  • tm_min
    Les minutes après les heure (0 à 59).

  • tm_hour
    les heures depuis minuit (0 à 23).

  • tm_mday
    Le jour du mois (1 à 31).

  • tm_mon
    Le mois (0 à 11 ; Janvier = 0).

  • tm_year
    L'année (année en cours moins 1900).

  • tm_wday
    Le jour de la semaine (0 à 6 ; Dimanche = 0).

  • tm_yday
    Le jour de l'année (0 à 365 ; 1er janvier = 0).

  • tm_isdst
    Toujours 0 pour gmtime.

_gmtime64_s, qui utilise la structure __time64_t, permet aux dates d'être exprimées jusqu'à 23h59 et 59s, le 31 décembre 3000, UTC; tandis que gmtime32_s ne permet d'exprimer les dates que jusqu'à 3h14 et 7s le 19 janvier 2038, UTC. Minuit, le 1er janvier 1970, est la limite inférieure de la plage de dates pour ces deux fonctions.

gmtime_s est une fonction inline qui prend _gmtime64_s, et time_t équivaut à __time64_t. Si vous devez forcer le compilateur à interpréter time_t comme l'ancien 32 bit time_t, vous pouvez définir _USE_32BIT_TIME_T. Cela forcera gmtime_s à être inline dans _gmtime32_s. Cela n'est pas recommandé car votre application peut échouer après le 18 janvier 2038, et elle n'est pas autorisée sur les plateformes 64 bits.

Configuration requise

Routine

En-tête requis

gmtime_s

<time.h>

_gmtime32_s

<time.h>

_gmtime64_s

<time.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

Exemple

// crt_gmtime64_s.c
// This program uses _gmtime64_s to convert a 64-bit
// integer representation of coordinated universal time
// to a structure named newtime, then uses asctime_s to
// convert this structure to an output string.
 

#include <time.h>
#include <stdio.h>

int main( void )
{
   struct tm newtime;
   __int64 ltime;
   char buf[26];
   errno_t err;

   _time64( &ltime );

   // Obtain coordinated universal time: 
   err = _gmtime64_s( &newtime, &ltime );
   if (err)
   {
      printf("Invalid Argument to _gmtime64_s.");
   }
   
   // Convert to an ASCII representation 
   err = asctime_s(buf, 26, &newtime);
   if (err)
   {
      printf("Invalid Argument to asctime_s.");
   }

   printf( "Coordinated universal time is %s\n", 
           buf );
}
  

Équivalent .NET Framework

Voir aussi

Référence

Gestion du temps

asctime_s, _wasctime_s

ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64

_ftime, _ftime32, _ftime64

gmtime, _gmtime32, _gmtime64

localtime_s, _localtime32_s, _localtime64_s

_mkgmtime, _mkgmtime32, _mkgmtime64

mktime, _mktime32, _mktime64

time, _time32, _time64