Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Konverterar ett time_t tidsvärde till en tm struktur och korrigerar för den lokala tidszonen. Dessa funktioner är versioner av localtime, _localtime32, _localtime64 med säkerhetsförbättringar enligt beskrivningen i Säkerhetsfunktioner i CRT.
Syntax
errno_t localtime_s( // See note in remarks section about linkage
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
);
Parameterar
tmDest
Pekare till tidsstrukturen som ska fyllas i.
sourceTime
Pekare mot den lagrade tiden.
Returvärde
Noll om det lyckas. Returvärdet är en felkod om det uppstår ett fel. Felkoder definieras i Errno.h. En lista över dessa fel finns i errno.
Feltillstånd
tmDest |
sourceTime |
Returvärde | Värde i tmDest |
Anropar ogiltig parameterhanterare |
|---|---|---|---|---|
NULL |
någon | EINVAL |
Inte ändrad | Yes |
Inte NULL (pekar på giltigt minne) |
NULL |
EINVAL |
Alla fält är inställda på -1 | Yes |
Inte NULL (pekar på giltigt minne) |
mindre än 0 eller större än _MAX__TIME64_T |
EINVAL |
Alla fält är inställda på -1 | Nej |
De två första felvillkoren anropar den ogiltiga parameterhanteraren enligt beskrivningen i Parameterverifiering. Om körningen tillåts fortsätta är dessa funktioner inställda errno på EINVAL och returnerar EINVAL.
Anmärkningar
Funktionen localtime_s konverterar en tid som lagras som ett time_t värde och lagrar resultatet i en struktur av typen tm. Värdet time_tsourceTime representerar sekunderna som förflutit sedan midnatt (00:00:00), 1 januari 1970, UTC. Det här värdet hämtas ofta från time funktionen.
localtime_s korrigerar för den lokala tidszonen om användaren först anger den globala miljövariabeln TZ. När TZ har angetts anges även tre andra miljövariabler (_timezone, _daylightoch _tzname) automatiskt. Om variabeln TZ inte har angetts localtime_s försöker du använda den tidszonsinformation som anges i programmet Datum/tid på Kontrollpanelen. Om den här informationen inte kan hämtas används PST8PDT, som betyder Tidszon i Stilla havet, som standard. Se _tzset en beskrivning av dessa variabler.
TZ är ett Microsoft-tillägg och inte en del av ANSI-standarddefinitionen för localtime.
Anmärkning
Målmiljön bör försöka avgöra om sommartid är i kraft.
_localtime64_s, som använder __time64_t strukturen, tillåter datum att uttryckas fram till 23:59:59, 18 januari 3001, samordnad universell tid (UTC), medan _localtime32_s representerar datum till och med 23:59:59 januari 18, 2038, UTC.
localtime_s är en infogad funktion som utvärderas till _localtime64_soch time_t motsvarar __time64_t. Om du behöver tvinga kompilatorn att tolka time_t som den gamla 32-bitars time_tkan du definiera _USE_32BIT_TIME_T, vilket gör localtime_s att utvärdera till _localtime32_s. Vi rekommenderar _USE_32BIT_TIME_Tinte , eftersom programmet kan misslyckas efter den 18 januari 2038 och inte tillåts på 64-bitarsplattformar.
Fälten i strukturtypen tm lagrar följande värden, som var och en är en int.
| Fält | Description |
|---|---|
tm_sec |
Sekunder efter minut (0–59). |
tm_min |
Minuter efter timme (0-59). |
tm_hour |
Timmar sedan midnatt (0-23). |
tm_mday |
Dag i månaden (1-31). |
tm_mon |
Månad (0–11; Januari = 0). |
tm_year |
År (aktuellt år minus 1900). |
tm_wday |
Veckodag (0-6; Söndag = 0). |
tm_yday |
Dag på året (0-365; 1 januari = 0). |
tm_isdst |
Positivt värde om sommartid är i kraft. 0 om sommartid inte är i kraft; negativt värde om statusen för sommartid är okänd. |
TZ Om miljövariabeln anges antar C-körningsbiblioteket regler som är lämpliga för USA för att implementera beräkningen av sommartid (DST).
Som standard är den här funktionens globala tillstånd begränsat till programmet. Information om hur du ändrar det här beteendet finns i Globalt tillstånd i CRT.
Anmärkning
När du använder Windows SDK version 10.0.26100.6901 och Visual Studio 2026 eller senare tillsammans, localtime_s är inte längre static inline (intern länkning). I stället är inline det (extern länkning).
För att återgå till det tidigare beteendet, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 innan du inkluderar några CRT-huvuden. Som standard _STATIC_INLINE_UCRT_FUNCTIONS är värdet 0.
Den här ändringen ökar UCRT-överensstämmelsen med C++-standarden och förbättrar kompatibiliteten med C++-moduler.
Kravspecifikation
| Rutin | ObligatoriskT C-huvud | ObligatoriskT C++-huvud |
|---|---|---|
localtime_s, _localtime32_s_localtime64_s |
<time.h> |
<ctime> eller <time.h> |
Mer kompatibilitetsinformation finns i Kompatibilitet.
Example
// 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
Se även
Tidshantering
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