localtime_s
, _localtime32_s
_localtime64_s
Konvertiert einen time_t
Zeitwert in eine tm
Struktur und korrigiert für die lokale Zeitzone. Diese Funktionen sind Versionen von localtime
, _localtime32
_localtime64
mit Sicherheitsverbesserungen, wie in sicherheitsfeatures im CRT beschrieben.
Syntax
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
);
Parameter
tmDest
Ein Zeiger auf die Zeitstruktur, die ausgefüllt wird
sourceTime
Zeiger auf die gespeicherte Zeit.
Rückgabewert
Null, wenn erfolgreich. Der Rückgabewert ist ein Fehlercode, falls ein Fehler auftritt. Fehlercodes werden in Errno.h
. Eine Auflistung dieser Fehler finden Sie unter errno
.
Fehlerbedingungen
tmDest |
sourceTime |
Rückgabewert | Wert in tmDest . |
Ruft ungültige Parametertyphandler auf |
---|---|---|---|---|
NULL |
any | EINVAL |
Not modified (Nicht geändert) | Ja |
Nicht NULL (zeigt gültigen Speicher an) |
NULL |
EINVAL |
Alle Felder auf-1 festgelegt | Ja |
Nicht NULL (zeigt gültigen Speicher an) |
kleiner als 0 (null) oder größer als _MAX__TIME64_T |
EINVAL |
Alle Felder auf-1 festgelegt | No |
Bei den ersten beiden Fehlerbedingungen wird ein Handler für ungültige Parameter 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 localtime_s
Funktion konvertiert eine als Wert gespeicherte time_t
Zeit und speichert das Ergebnis in einer Struktur vom Typ tm
. Der time_t
-Wert sourceTime
stellt die Sekunden dar, die seit Mitternacht (00:00:00), 1. Januar 1970, UTC, verstrichen sind. Dieser Wert wird häufig aus der time
Funktion abgerufen.
localtime_s
korrigiert für die lokale Zeitzone, wenn der Benutzer zunächst die globalen Umgebungsvariablen TZ
festlegt. Wenn TZ
festgelegt wird, werden drei andere Umgebungsvariablen (_timezone
, _daylight
, und _tzname
) ebenfalls automatisch festgelegt. Wenn die TZ
Variable nicht festgelegt ist, wird versucht, die Zeitzoneninformationen zu verwenden, localtime_s
die in der Anwendung "Datum/Uhrzeit" in Systemsteuerung angegeben sind. Wenn diese Informationen nicht abgerufen werden können, wird PST8PDT, der die Pazifische Zeitzone angibt, standardmäßig verwendet. Eine Beschreibung dieser Variablen finden Sie unter.See _tzset
for a description of these variables. TZ
ist eine Microsoft-Erweiterung und nicht Teil der ANSI-Standarddefinition von localtime
.
Hinweis
Die Zielumgebung soll versuchen zu bestimmen, ob die Sommerzeit wirksam ist.
_localtime64_s
, das die __time64_t
-Struktur verwendet, erlaubt das Ausdrücken von Daten über den 18. Januar 3001, 23:59:59 UTC (Koordinierte Weltzeit) hinaus, während _localtime32_s
Datumsangaben bis zum 18. Januar 2038, 23:59:59, UTC, darstellt.
localtime_s
ist eine Inlinefunktion, die _localtime64_s
auswertet, und time_t
entspricht __time64_t
. Wenn Sie erzwingen müssen, dass der Compiler als alte 32-Bit time_t
interpretiert time_t
wird, können Sie definieren_USE_32BIT_TIME_T
, was zu einer Auswertung _localtime32_s
führtlocaltime_s
. Es wird nicht empfohlen _USE_32BIT_TIME_T
, da Ihre Anwendung nach dem 18. Januar 2038 fehlschlägt und auf 64-Bit-Plattformen nicht zulässig ist.
Die Felder des Strukturtyps tm
speichern die folgenden Werte, die jeweils ein int
.
Feld | Beschreibung |
---|---|
tm_sec |
Sekunden nach Minute (0 - 59). |
tm_min |
Minuten nach Stunde (0 - 59). |
tm_hour |
Stunden seit 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, wenn die Sommerzeit nicht wirksam ist; Negativer Wert, wenn der Status der Sommerzeit unbekannt ist. |
Wenn die Umgebungsvariable TZ
festgelegt ist, setzt die C-Laufzeitbibliothek voraus, dass die Regeln für die USA für die Implementierung der Berechnung der Sommerzeit gelten.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Anforderungen
Routine | Erforderlicher C-Header | Erforderlicher C++-Header |
---|---|---|
localtime_s , _localtime32_s _localtime64_s |
<time.h> |
<ctime> oder <time.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
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 );
}
Fri Apr 25 01:19:27 PM
Siehe auch
Zeitverwaltung
asctime_s
, _wasctime_s
ctime
, , _ctime32
_ctime64
, _wctime
, , _wctime32
_wctime64
_ftime
, _ftime32
_ftime64
gmtime_s
, _gmtime32_s
_gmtime64_s
localtime
, _localtime32
_localtime64
time
, _time32
_time64
_tzset