localtime_s
, , _localtime32_s
_localtime64_s
Convertit une time_t
valeur de temps en structure tm
et corrige le fuseau horaire local. Ces fonctions sont des versions de , _localtime64
_localtime32
avec des améliorations de localtime
sécurité, comme décrit dans les fonctionnalités de sécurité dans le CRT.
Syntaxe
errno_t localtime_s(
struct tm* const tmDest,
time_t const* const sourceTime
);
errno_t _localtime32_s(
struct tm* tmDest,
__time32_t const* sourceTime
);
errno_t _localtime64_s(
struct tm* tmDest,
__time64_t const* sourceTime
);
Paramètres
tmDest
Pointeur désignant la structure de temps à renseigner.
sourceTime
Pointeur désignant la valeur de temps stockée.
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 |
Valeur retournée | Valeur dans tmDest |
Appelle un gestionnaire de paramètres non valides |
---|---|---|---|---|
NULL |
n'importe laquelle | EINVAL |
Non modifié | Oui |
Pas NULL (pointe vers une mémoire valide) |
NULL |
EINVAL |
Tous les champs définis sur -1 | Oui |
Pas NULL (pointe vers une mémoire valide) |
Inférieur à 0 ou supérieur à _MAX__TIME64_T |
EINVAL |
Tous les champs définis sur -1 | Non |
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 localtime_s
fonction convertit une heure stockée sous forme de time_t
valeur et stocke le résultat dans une structure de type tm
. La valeur time_t
sourceTime
représente les secondes écoulées depuis le 1er janvier 1970 à minuit (00:00:00), heure UTC. Cette valeur est souvent obtenue à partir de la time
fonction.
localtime_s
effectue une correction en fonction du fuseau horaire local si l’utilisateur définit d’abord la variable d’environnement globale TZ
. Quand TZ
est définie, les trois autres variables d’environnement (_timezone
, _daylight
et _tzname
) sont également définies automatiquement. Si la TZ
variable n’est pas définie, localtime_s
tente d’utiliser les informations de fuseau horaire spécifiées dans l’application Date/Heure dans Panneau de configuration. Si ces informations ne peuvent pas être obtenues, PST8PDT, ce qui signifie que le fuseau horaire pacifique est utilisé par défaut. Consultez _tzset
une description de ces variables. TZ
est une extension Microsoft et ne fait pas partie de la définition de la norme ANSI de localtime
.
Remarque
L’environnement cible doit tenter de déterminer si l’heure d’été est en vigueur.
_localtime64_s
, qui utilise la structure __time64_t
, permet d’exprimer les dates jusqu’au 18 janvier 3001 à 23:59:59,, heure UTC (temps universel coordonné), tandis que _localtime32_s
représente les dates jusqu’au 18 janvier 2038 à 23:59:59, heure UTC.
localtime_s
est une fonction inline qui prend la valeur _localtime64_s
, tandis que time_t
équivaut à __time64_t
. Si vous devez forcer le compilateur à interpréter time_t
comme l’ancien 32 bits time_t
, vous pouvez définir _USE_32BIT_TIME_T
, ce qui provoque localtime_s
l’évaluation _localtime32_s
. Nous vous déconseillons _USE_32BIT_TIME_T
, car votre application peut échouer après le 18 janvier 2038 et elle n’est pas autorisée sur les plateformes 64 bits.
Les champs du type tm
de structure stockent les valeurs suivantes, chacune d’elles étant un int
.
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 |
Valeur positive si l’heure d’été est en vigueur ; 0 si l’heure d’été n’est pas en vigueur ; valeur négative si l’état de l’heure d’été est inconnu. |
Si la variable d’environnement TZ
est définie, la bibliothèque runtime C suppose que les règles de calcul de l’heure d’été appropriées sont celles des États-Unis.
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 |
---|---|---|
localtime_s , , _localtime32_s _localtime64_s |
<time.h> |
<ctime> ou <time.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// crt_localtime_s.c
// This program uses _time64 to get the current time
// and then uses _localtime64_s() to convert this time to a structure
// representing the local time. The program converts the result
// from a 24-hour clock to a 12-hour clock and determines the
// proper extension (AM or PM).
#include <stdio.h>
#include <string.h>
#include <time.h>
int main( void )
{
struct tm newtime;
char am_pm[] = "AM";
__time64_t long_time;
char timebuf[26];
errno_t err;
// Get time as 64-bit integer.
_time64( &long_time );
// Convert to local time.
err = _localtime64_s( &newtime, &long_time );
if (err)
{
printf("Invalid argument to _localtime64_s.");
exit(1);
}
if( newtime.tm_hour > 12 ) // Set up extension.
strcpy_s( am_pm, sizeof(am_pm), "PM" );
if( newtime.tm_hour > 12 ) // Convert from 24-hour
newtime.tm_hour -= 12; // to 12-hour clock.
if( newtime.tm_hour == 0 ) // Set hour to 12 if midnight.
newtime.tm_hour = 12;
// Convert to an ASCII representation.
err = asctime_s(timebuf, 26, &newtime);
if (err)
{
printf("Invalid argument to asctime_s.");
exit(1);
}
printf( "%.19s %s\n", timebuf, am_pm );
}
Fri Apr 25 01:19:27 PM
Voir aussi
Gestion des horaires
asctime_s
, _wasctime_s
ctime
, , _ctime32
, _wctime
_ctime64
, , _wctime32
_wctime64
_ftime
, , _ftime32
_ftime64
gmtime_s
, , _gmtime32_s
_gmtime64_s
localtime
, , _localtime32
_localtime64
time
, , _time32
_time64
_tzset