Freigeben über


localtime_s, _localtime32_s, _localtime64_s

Konvertiert einen Zeitwert und korrigiert für die lokale Zeitzone.Dies sind Versionen von localtime, _localtime32, _localtime64 mit beschrieben, wie unter Security Enhancements in Sicherheitsfeatures im CRT.

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 auf die zu füllende Zeit Struktur.

  • time
    Zeiger auf die gespeicherten Zeit.

Rückgabewert

Beliebige wenn der Vorgang erfolgreich war.Der Rückgabewert ist ein Fehlercode, wenn ein Fehler auftritt.Fehlercodes werden in Errno.h definiert.Eine Liste dieser Fehler ausgelöst wird, finden Sie unter errno.

Fehlerbedingungen

_tm

time

Rückgabewert

Wert in _tm

Ruft den Handler auf ungültige Parameter

NULL

alle

EINVAL

Nicht geändert

Ja

Nicht NULL (Zeigt auf den gültigen Arbeitsspeicher)

NULL

EINVAL

Alle Felder auf -1 festgelegt

Ja

Nicht NULL (Zeigt auf den gültigen Arbeitsspeicher)

kleiner als 0 oder größer als _MAX__TIME64_T

EINVAL

Alle Felder auf -1 festgelegt

Nein

Bei der ersten beiden Fehlerbedingungen ungültige Parameter wird der Ereignishandler aufgerufen, wie in Parametervalidierungbeschrieben.Wenn die Ausführung fortgesetzt werden kann, darf dieses Features zu errno festlegen EINVAL und geben EINVAL.

Hinweise

Die _localtime32_s-Funktion konvertiert eine Uhrzeit, die als time_t-Wert gespeichert wird und speichert das Ergebnis in einer Struktur des Typs tm.Der long-Wert timer stellt die seit Mitternacht vergangenen Sekunden verstrich dar (00:00: 00) am 1. Januar 1970 UTC.Dieser Wert wird normalerweise von der time-Funktion abgerufen.

_localtime32_s korrigiert für die lokale Zeitzone, wenn der Benutzer zuerst die globalen Umgebungsvariablen TZfestlegt.Wenn TZ festgelegt ist, werden drei weitere Umgebungsvariablen (_timezone, _daylightund _tzname) automatisch ebenfalls festgelegt.Wenn die TZ-Variable nicht festgelegt ist, versucht localtime32_s mit Zeitzoneninformationen zu verwenden, die in der Datum/Uhrzeit-Anwendung in der Systemsteuerung angegeben werden.Wenn diese Informationen nicht abgerufen werden können, wird PST8PDT, das die pazifische Zeitzone angegeben wird, standardmäßig verwendet.Weitere Informationen finden Sie unter _tzset für die Beschreibung dieser Variablen.TZ ist eine Microsoft-Erweiterung und ein nicht Teil der Definition von localtimeANSI-Standard.

HinweisHinweis

Die Zielumgebung versuchen soll, um zu ermitteln, ob der Sommerzeit gültig ist.

_localtime64_s, die die __time64_t - Struktur verwendet, stellt die oben und 23:59 Datumsangaben ausgedrückt werden: 59 3000 am 31. Dezember, koordinierte Weltzeit (UTC), während _localtime32_s Datumsangaben und 03:14 darstellt: Am 7. Januar 19 2038, UTC.

localtime_s ist eine Inlinefunktion, die _localtime64_sergibt, und time_t ist mit __time64_t.Wenn Sie den Compiler erzwingen müssen, um alte als time_t 32-Bit- time_tinterpretiert wird, können Sie _USE_32BIT_TIME_Tdefinieren.Auf diese Weise wird localtime_s , _localtime32_sauszuwerten.Dies wird nicht empfohlen, da die Anwendung möglicherweise nach dem 19. Januar 2038 fehlschlägt, und sie wird nicht auf 64-Bit-Plattformen nicht zulässig.

Die Felder des Strukturtyps TM speichern den folgenden Werten, von denen jeder intist.

  • tm_sec
    Sekunden (0 Minute nach 59).

  • tm_min
    Minuten nach der vollen Stunde (0:59).

  • tm_hour
    Stunden nach Mitternacht (0:23).

  • tm_mday
    Tag des Monats (1 bis 31).

  • tm_mon
    Monat (0 bis 11. Januar = 0).

  • tm_year
    Jahres (laufendes Jahr minus 1900).

  • tm_wday
    Tag der Woche (0 – 6; Sonntag = 0).

  • tm_yday
    Tag des Jahres (0 – 365; Am 1. Januar = 0).

  • tm_isdst
    Positiver Wert, wenn die Sommerzeit aktiv ist. 0 = Sommerzeit nicht aktiv ist. negativer Wert, wenn Status der Sommerzeit unbekannt ist.Wenn die TZ Umgebungsvariable festgelegt ist, erhält die C-Laufzeitbibliothek die Regeln an, die 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 finden Sie unter Kompatibilität 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

System::DateTime::ToLocalTime

Siehe auch

Referenz

Zeit-Verwaltung

asctime_s, _wasctime_s

ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64

_ftime, _ftime32, _ftime64

gmtime_s, _gmtime32_s, _gmtime64_s

localtime, _localtime32, _localtime64

Zeit, _time32, _time64

_tzset