Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Konwertuje wartość czasu i poprawia dla lokalnej strefy czasowej. Dostępne są bezpieczniejsze wersje tych funkcji; zobacz _localtime64_s.
Składnia
struct tm *localtime( const time_t *sourceTime ); // See note in remarks section about linkage
struct tm *_localtime32( const __time32_t *sourceTime );
struct tm *_localtime64( const __time64_t *sourceTime );
Parametry
sourceTime
Wskaźnik do przechowywanego czasu.
Wartość zwracana
Zwróć wskaźnik do wyniku struktury lub NULL jeśli data przekazana do funkcji to:
Przed północą, 1 stycznia 1970.
Po 03:14:07, 19 stycznia 2038 r., UTC (przy użyciu i
_time32time32_t).Po 23:59:59, 31 grudnia 3000, UTC (przy użyciu i
_time64__time64_t).
_localtime64, który używa __time64_t struktury, umożliwia wyrażenie dat do 23:59:59, 31 grudnia 3000, skoordynowany uniwersalny czas (UTC), podczas gdy _localtime32 reprezentuje daty do 23:59:59 stycznia 18, 2038, UTC.
localtime jest funkcją śródliniową, która oblicza wartość _localtime64, i time_t jest równoważna funkcji __time64_t. Jeśli musisz wymusić, aby kompilator interpretował time_t jako stary 32-bitowy time_telement , możesz zdefiniować element _USE_32BIT_TIME_T.
_USE_32BIT_TIME_Tpowoduje localtime ocenę wartości ._localtime32 Nie zalecamy , _USE_32BIT_TIME_Tponieważ aplikacja może zakończyć się niepowodzeniem po 18 stycznia 2038 r. i nie jest dozwolona na platformach 64-bitowych.
Pola typu tm struktury przechowują następujące wartości, z których każda jest wartością int:
| Pole | opis |
|---|---|
tm_sec |
Sekundy po minucie (0–59). |
tm_min |
Minuty po godzinie (0–59). |
tm_hour |
Godziny od północy (od 0 do 23). |
tm_mday |
Dzień miesiąca (od 1 do 31). |
tm_mon |
Miesiąc (0– 11; Styczeń = 0). |
tm_year |
Rok (bieżący rok minus 1900). |
tm_wday |
Dzień tygodnia (od 0 do 6; Niedziela = 0). |
tm_yday |
Dzień roku (od 0 do 365; 1 stycznia = 0). |
tm_isdst |
Wartość dodatnia, jeśli czas letni jest w mocy; 0, jeśli czas letni nie jest w mocy; wartość ujemna, jeśli stan czasu letniego jest nieznany. |
Jeśli zmienna TZ środowiskowa jest ustawiona, biblioteka czasu wykonywania języka C zakłada reguły właściwe dla Stany Zjednoczone do implementowania obliczania czasu letniego (DST).
Uwagi
Funkcja localtime konwertuje czas przechowywany jako time_t wartość i przechowuje wynik w strukturze typu tm. Wartość longsourceTime reprezentuje sekundy, które upłynęły od północy (00:00:00), 1 stycznia 1970 r. UTC. Ta wartość jest często uzyskiwana z time funkcji .
Zarówno 32-bitowe, jak i 64-bitowe wersje , gmtimemktime, mkgmtimei localtime używają jednej tm struktury na wątek do konwersji. Każde wywołanie jednej z tych procedur niszczy wynik poprzedniego wywołania.
localtime poprawia dla lokalnej strefy czasowej, jeśli użytkownik najpierw ustawia globalną zmienną środowiskową TZ. Po TZ ustawieniu trzy inne zmienne środowiskowe (_timezone, _daylight, i _tzname) również są ustawiane automatycznie. Jeśli zmienna TZ nie jest ustawiona, localtime próbuje użyć informacji o strefie czasowej określonej w aplikacji data/godzina w Panel sterowania. Jeśli nie można uzyskać tych informacji, PST8PDT, co oznacza strefę czasową pacyficznego, jest używane domyślnie. Zobacz _tzset opis tych zmiennych.
TZjest rozszerzeniem firmy Microsoft, a nie częścią standardowej definicji anSI .localtime
Uwaga
Środowisko docelowe powinno spróbować określić, czy czas letni jest w mocy.
Te funkcje weryfikują swoje parametry. Jeśli sourceTime jest wskaźnikiem o wartości null lub sourceTime jeśli wartość jest ujemna, te funkcje wywołują nieprawidłową procedurę obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, funkcje zwracają NULL i ustawiają wartość errnoEINVAL .
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Uwaga
W przypadku korzystania z zestawu Windows SDK w wersji 10.0.26100.6901 i Visual Studio 2026 lub nowszej localtime nie jest już static inline (połączenie wewnętrzne). Zamiast tego jest inline to (połączenie zewnętrzne).
Aby powrócić do poprzedniego zachowania, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 przed dołączeniem dowolnych nagłówków CRT. Domyślnie _STATIC_INLINE_UCRT_FUNCTIONS jest ustawiona wartość 0.
Ta zmiana zwiększa zgodność UCRT ze standardem C++ i poprawia zgodność z modułami języka C++.
Wymagania
| Procedura | Wymagany nagłówek języka C | Wymagany nagłówek języka C++ |
|---|---|---|
localtime, , _localtime32_localtime64 |
<time.h> |
<ctime> lub <time.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// crt_localtime.cpp
// compile with: /W3
// This program uses _time64 to get the current time
// and then uses localtime64() 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;
_time64( &long_time ); // Get time as 64-bit integer.
// Convert to local time.
newtime = _localtime64( &long_time ); // C4996
// Note: _localtime64 deprecated; consider _localetime64_s
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;
char buff[30];
asctime_s( buff, sizeof(buff), newtime );
printf( "%.19s %s\n", buff, am_pm );
}
Tue Feb 12 10:05:58 AM
Zobacz też
Zarządzanie czasem
asctime, _wasctime
ctime, , _ctime32, _ctime64, _wctime, , _wctime32_wctime64
_ftime, , _ftime32_ftime64
gmtime, , _gmtime32_gmtime64
localtime_s, , _localtime32_s_localtime64_s
time, , _time32_time64
_tzset