localtime_s, _localtime32_s, _localtime64_s
Konvertiert einen Uhrzeitwert und behoben für die lokale Zeitzone. Diese Versionen sind von localtime, _localtime32, _localtime64 mit werden, wie in Sicherheitsfunktionen in der CRT beschrieben.
errno_t localtime_s(
struct tm* _tm,
const time_t *time
);
errno_t _localtime32_s(
struct tm* _tm,
const time32_t *time
);
errno_t _localtime64_s(
struct tm* _tm,
const _time64_t *time
);
Parameter
_tm
Zeiger zur zu füllenden Zeitstruktur.time
Zeiger auf die gespeicherte Zeit.
Rückgabewert
Null wenn erfolgreich. Der Rückgabewert ist ein Fehlercode, wenn ein Fehler auftritt. Fehlercodes werden in Errno.h definiert. Eine Liste dieser Fehler, finden Sie unter errno.
Fehlerbedingungen
_tm |
time |
Rückgabewert |
Wert in _tm |
Ruft ungültigen Parameterhandler auf |
---|---|---|---|---|
NULL |
any |
EINVAL |
Nicht geändert |
ja |
Nicht NULL (Punkte zum gültigen Arbeitsspeicher) |
NULL |
EINVAL |
Nun fängt Satz bis -1 auf |
ja |
Nicht NULL (Punkte zum gültigen Arbeitsspeicher) |
weniger als 0 oder größer als _MAX__TIME64_T |
EINVAL |
Nun fängt Satz bis -1 auf |
nein |
Bei der ersten zwei Fehlerzustände wird der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, stellen diese Funktionen errno auf EINVAL ein und geben EINVAL zurück.
Hinweise
Die _localtime32_s-Funktion konvertiert eine Zeit, die als time_t-Wert gespeichert wird und wird das Ergebnis in einer Struktur des Typs tm. Der long-Wert timer stellt die Sekunden dar, die seit Mitternacht verstrichen sind (00:00: 00) am 1. Januar 1970 UTC. Dieser Wert wird normalerweise von der Funktion time abrufen.
_localtime32_s behoben für die lokale Zeitzone, wenn der Benutzer zunächst die globale Umgebungsvariable TZ festgelegt wird. Wenn TZ festgelegt wird, werden drei anderen Umgebungsvariablen (_timezone, _daylight und _tzname) auch automatisch festgelegt. Wenn die Variable TZ nicht festgelegt ist, versucht localtime32_s, die Zeitzonendaten verwenden, die in der Datum /Uhrzeits- Anwendung in der Systemsteuerung angegeben werden. Wenn diese Informationen nicht ermittelt werden können, wird PST8PDT, das der pazifischen Zeitzone angibt, standardmäßig verwendet. _tzset finden Sie eine Beschreibung dieser Variablen. TZ ist einer Microsoft-Erweiterung und ein nicht Teil der ANSI-Standarddefinition von localtime.
Hinweis
Die Zielumgebung sollte versuchen, zu bestimmen, ob Sommerzeit wirksam ist.
_localtime64_s, die die __time64_t-Struktur verwendet, unterstützt von 23:59 die oben ausgedrückt werden Datumsangaben: 59 3000 am 31. Dezember, koordinierte Weltzeit (UTC), während _localtime32_s Datumsangaben von 03:14 darstellt: Am 7. Januar 19 2038, UTC.
localtime_s ist eine Inlinefunktion, die zu _localtime64_s, und time_t entspricht __time64_t. Wenn Sie dem Compiler erzwingen müssen, um time_t als 32-Bit- alte time_t interpretiert, können Sie _USE_32BIT_TIME_T definieren. Hierdurch wird localtime_s, _localtime32_s auszuwerten. Dies ist nicht empfehlenswert, da Ihre Anwendung möglicherweise nach dem 19. Januar 2038 fehlschlägt, und nicht auf 64-Bit-Plattformen zulässig.
Die Felder des Strukturtyps TM werden die folgenden Werte, von denen jeder int ist.
tm_sec
Sekunden nach Minute (0 - 59).tm_min
Minuten nach Stunde (0 - 59).tm_hour
Stunden nach Mitternacht (0 - 23).tm_mday
Tag im Monat (1 - 31).tm_mon
Monat (0 - 11; Januar = 0).tm_year
Jahr (aktuelles Jahr minus 1900).tm_wday
Tag der Woche (0 - 6; Sonntag = 0).tm_yday
Tag des Jahres (0 - 365; Januar 1 = 0).tm_isdst
Positiver Wert, wenn Sommerzeit wirksam ist; 0 die Sommerzeit nicht aktiv ist; negativer Wert, wenn Status der Sommerzeit nicht bekannt ist. Wenn die Umgebungsvariable TZ festgelegt wird, hat die C-Laufzeitbibliothek die Regeln an, die in den USA zum Implementieren der Berechnung der Sommerzeit (DST) entsprechen.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
localtime_s |
<time.h> |
_localtime32_s |
<time.h> |
_localtime64_s |
<time.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.
Beispiel
// 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 );
}
Beispielausgabe
Fri Apr 25 01:19:27 PM
.NET Framework-Entsprechung
Siehe auch
Referenz
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
gmtime_s, _gmtime32_s, _gmtime64_s