gmtime_s
, _gmtime32_s
, _gmtime64_s
Convertit une valeur de temps en structure tm
. Ces fonctions sont des versions de _gmtime32
, _gmtime64
avec des améliorations de sécurité, comme indiqué dans Fonctionnalités de sécurité dans le CRT.
Syntaxe
errno_t gmtime_s(
struct tm* tmDest,
const __time_t* sourceTime
);
errno_t _gmtime32_s(
struct tm* tmDest,
const __time32_t* sourceTime
);
errno_t _gmtime64_s(
struct tm* tmDest,
const __time64_t* sourceTime
);
Paramètres
tmDest
Pointeur désignant une structure tm
. Les champs de la structure retournée doivent contenir la valeur évaluée de l’argument timer
en heure UTC plutôt qu’en heure locale.
sourceTime
Pointeur désignant la valeur de temps stockée. Le temps est représenté sous forme de secondes écoulées depuis le 1er janvier 1970 minuit (00:00:00), temps universel coordonné (UTC).
Valeur retournée
Zéro si l’opération aboutit. La valeur renvoyée est un code d’erreur en cas de défaillance. Les codes d’erreur sont définis dans Errno.h
. Pour obtenir la liste de ces erreurs, consultez errno
.
Conditions d’erreur
tmDest |
sourceTime |
Retour | Valeur dans tmDest |
---|---|---|---|
NULL |
n'importe laquelle | EINVAL |
Non modifiée. |
Pas NULL (pointe vers une mémoire valide) |
NULL |
EINVAL |
Tous les champs définis sur -1. |
Pas NULL |
< 0 | EINVAL |
Tous les champs définis sur -1. |
Les deux premières conditions d’erreur appellent le gestionnaire de paramètres non valides, comme indiqué dans Validation des paramètres. Si l'exécution est autorisée à se poursuivre, ces fonctions attribuent à errno
la valeur EINVAL
et retournent EINVAL
.
Notes
La fonction _gmtime32_s
décompose la valeur sourceTime
, et la stocke dans une structure allouée de type tm
, définie dans Time.h
. L’adresse de la structure est passée dans tmDest
. La valeur de sourceTime
est souvent obtenue à partir d’un appel à la fonction time
.
Chacun des champs de la structure est de type int
, comme l’indique le tableau suivant :
Champ | Description |
---|---|
tm_sec |
Secondes après la minute (0 - 59). |
tm_min |
Minutes après l’heure (0 - 59). |
tm_hour |
Heures depuis minuit (0 - 23). |
tm_mday |
Jour du mois (1 - 31). |
tm_mon |
Mois (0 - 11 ; janvier = 0). |
tm_year |
Année (année en cours moins 1900). |
tm_wday |
Jour de la semaine (0 - 6 ; dimanche = 0). |
tm_yday |
Jour de l’année (0 - 365 ; 1er janvier = 0). |
tm_isdst |
Toujours 0 pour gmtime_s . |
_gmtime64_s
, qui utilise la structure __time64_t
, permet d’exprimer les dates jusqu’au 31 décembre 3000 à 23:59:59, heure UTC, tandis que gmtime32_s
représente uniquement les dates jusqu’au 18 janvier 2038 à 23:59:59, heure UTC. Le 1er janvier 1970 à minuit est la limite inférieure de la plage de dates pour ces deux fonctions.
gmtime_s
est une fonction inline qui prend la valeur _gmtime64_s
, tandis que time_t
équivaut à __time64_t
. Si vous devez forcer le compilateur à interpréter time_t
comme ancien time_t
32 bits, vous pouvez définir _USE_32BIT_TIME_T
. _USE_32BIT_TIME_T
rend gmtime_s
inlined en tant que _gmtime32_s
. Nous vous déconseillons _USE_32BIT_TIME_T
, car votre application risque de ne plus fonctionner après le 18 janvier 2038, et de plus, elle n’est pas autorisée sur les plateformes 64 bits.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Spécifications
Routine | En-tête C requis | En-tête C++ requis |
---|---|---|
gmtime_s , _gmtime32_s , _gmtime64_s |
<time.h> |
<ctime> ou <time.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
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( <ime );
// Obtain coordinated universal time:
err = _gmtime64_s( &newtime, <ime );
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 );
}
Coordinated universal time is Fri Apr 25 20:12:33 2003
Voir aussi
Gestion des horaires
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