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, wenn 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 |
Beliebig | 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 | Nein |
Die ersten beiden Fehlerbedingungen rufen den ungültigen Parameterhandler auf, wie in der Parameterüberprüfung 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 des Monats (1 - 31). |
tm_mon |
Monat (0 - 11; Januar = 0). |
tm_year |
Jahr (aktuelles Jahr minus 1900). |
tm_wday |
Wochentag (0 - 6; Sonntag = 0). |
tm_yday |
Tag des Jahres (0 - 365; 1. Januar = 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. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the 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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für