Freigeben über


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

System::DateTime::ToLocalTime

Siehe auch

Referenz

Uhrzeitverwaltung

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