localtime_s, _localtime32_s, _localtime64_s
Konwertuje wartość czasu i koryguje się dla lokalnej strefy czasowej.Są to wersje strtotime, _localtime32, _localtime64 z rozszerzeń zabezpieczeń opisane w Funkcje zabezpieczeń w 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
);
Parametry
_tm
Wskaźnik do struktury czasu wypełnione.time
Wskaźnik, aby czas przechowywane.
Wartość zwracana
Zero, jeśli kończy się pomyślnie.Wartość zwracana jest kod błędu, jeśli wystąpi awaria.Kody błędów są zdefiniowane w errno.Aby uzyskać listę tych błędów, zobacz errno.
Warunki błędów
_tm |
time |
Zwracanie wartości |
Wartość_tm |
Wywołuje program obsługi nieprawidłowy parametr |
---|---|---|---|---|
NULL |
wszelkie |
EINVAL |
Nie zmodyfikowano |
Tak |
Nie NULL (wskazuje prawidłowy pamięci) |
NULL |
EINVAL |
Wszystkie pola ma wartość -1 |
Tak |
Nie NULL (wskazuje prawidłowy pamięci) |
mniejsza niż 0 lub większa niż_MAX__TIME64_T |
EINVAL |
Wszystkie pola ma wartość -1 |
Nr |
W odniesieniu do pierwszego warunki dwóch błąd nieprawidłowy parametr wywoływana jest funkcja obsługi, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, ustaw te funkcje errno do EINVAL i zwraca EINVAL.
Uwagi
_localtime32_s Funkcja konwertuje czas przechowywane jako time_t wartość i zapisuje wynik w postaci struktury typu tm.long Wartość timer reprezentuje liczbę sekund, jaka upłynęła od północy (00: 00), 1 stycznia 1970 roku UTC.Wartość ta jest zazwyczaj uzyskiwany z time funkcji.
_localtime32_skoryguje się dla lokalnej strefy czasowej, jeśli użytkownik najpierw ustawia zmienną środowiskową globalnego TZ.Gdy TZ jest ustawiona, trzech innych zmiennych środowiskowych (_timezone, _daylight, i _tzname) są automatycznie ustawiane również.Jeśli TZ zmienna nie jest ustawiona, localtime32_s próbuje użyć informacje o strefie czasowej, określona w aplikacji, Data i godzina w Panelu sterowania.Jeśli nie można uzyskać te informacje, PST8PDT, co oznacza w strefie czasu Pacyfiku, jest używany domyślnie.Zobacz _tzset opis tych zmiennych.TZrozszerzenia Microsoft i nie jest częścią standardowej definicji ANSI z localtime.
[!UWAGA]
Środowiska docelowego należy spróbować ustalić, czy zmiany czasu letniego jest w mocy.
_localtime64_s, który korzysta z __time64_t struktury, pozwala dat wyrażone są do 23: 59: 59, 31 grudnia, 3000, skoordynowanego czasu uniwersalnego (UTC), należy _localtime32_s reprezentuje dat poprzez 03: 14: 07 19 stycznia 2038, UTC.
localtime_sfunkcji śródwierszowej, której wynikiem jest _localtime64_s, i time_t jest równoważne z __time64_t.Jeśli trzeba wymusić na kompilatorze interpretowania time_t jako stary 32-bitowe time_t, można zdefiniować _USE_32BIT_TIME_T.Spowoduje to zaawansowana localtime_s do oceny do _localtime32_s.Nie jest to zalecane, ponieważ aplikacja może zakończyć się niepowodzeniem po 19 stycznia 2038, i nie jest dozwolone na platformach 64-bitowych.
Pól typu Struktura tm przechowywać następujące wartości, z których każdy jest int.
tm_sec
Sekund po minucie (0-59).tm_min
Minut po godzinie (0-59).tm_hour
Godziny od północy (0-23).tm_mday
Dzień miesiąca (1 – 31).tm_mon
Miesiąc (0 – 11; Stycznia = 0).tm_year
Rok (bieżącego roku minus 1900).tm_wday
Dzień tygodnia (0-6; Niedziela = 0).tm_yday
Dzień roku (0 – 365; 1 Stycznia = 0).tm_isdst
Wartość dodatnia, jeśli zmiany czasu letniego obowiązujące; 0, jeśli zmiany czasu letniego, nie jest skuteczne; wartość ujemna, jeśli stan czasu letniego jest nieznany.Jeśli TZ zmienna środowiskowa jest ustawiona, biblioteka uruchomieniowa c przyjmie zasady właściwe do Stanów Zjednoczonych wykonywania obliczania czasu letniego (DST).
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
localtime_s |
<time.h> |
_localtime32_s |
<time.h> |
_localtime64_s |
<time.h> |
Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.
Przykład
// 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 );
}
Przykładowe dane wyjściowe
Fri Apr 25 01:19:27 PM
Odpowiednik w programie .NET Framework
Zobacz też
Informacje
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
gmtime_s, _gmtime32_s, _gmtime64_s