Freigeben über


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_tinterpretiert time_t wird, können Sie definieren_USE_32BIT_TIME_T, was zu einer Auswertung _localtime32_sfü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