mktime
, , _mktime32
_mktime64
Przekonwertuj czas lokalny na wartość kalendarza.
Składnia
time_t mktime(
struct tm *timeptr
);
__time32_t _mktime32(
struct tm *timeptr
);
__time64_t _mktime64(
struct tm *timeptr
);
Parametry
timeptr
Struktura wskaźnika do czasu; zobacz asctime
.
Wartość zwracana
_mktime32
Zwraca określony czas kalendarza zakodowany jako wartość typu time_t
. Jeśli timeptr
odwołuje się do daty przed północą, 1 stycznia 1970 r. lub jeśli nie można przedstawić czasu kalendarza, _mktime32
zwraca rzutowanie -1 do typu time_t
. W przypadku używania _mktime32
i, jeśli timeptr
odwołuje się do daty po 23:59:59 stycznia 18, 2038, uniwersalny czas koordynowany (UTC), zwróci -1 rzutowanie, aby wpisać time_t
.
_mktime64
Funkcja zwróci rzutowanie -1, aby wpisać __time64_t
, jeśli timeptr
odwołuje się do daty po 23:59:59, 31 grudnia 3000, UTC.
Uwagi
_mktime32
Funkcje mktime
, i _mktime64
konwertują podaną strukturę czasu (prawdopodobnie niekompletną) wskazywaną przez timeptr
na w pełni zdefiniowaną time_t
strukturę z znormalizowanymi wartościami, a następnie konwertuje ją na wartość godziny kalendarza. Przekonwertowany czas ma takie samo kodowanie jak wartości zwracane przez time
funkcję. Oryginalne wartości tm_wday
elementów i tm_yday
timeptr
struktury są ignorowane, a oryginalne wartości innych składników nie są ograniczone do ich normalnych zakresów.
mktime
jest funkcją śródliniową, która jest równoważna _mktime64
funkcji , chyba że _USE_32BIT_TIME_T
jest zdefiniowana, w takim przypadku jest równoważna funkcji _mktime32
.
Po dostosowaniu do czasu UTC _mktime32
obsługuje daty od północy, 1 stycznia 1970 r., do 23:59:59 stycznia 18, 2038, UTC. _mktime64
obsługuje daty od północy, 1 stycznia 1970 do 23:59:59, 31 grudnia 3000. To dostosowanie może spowodować zwrócenie -1 (rzutowanie na time_t
, __time32_t
lub __time64_t
), mimo że określona data mieści się w zakresie. Jeśli na przykład jesteś w Kairze w Egipcie, czyli o dwie godziny przed UTC, dwie godziny zostaną odejmowane od daty określonej w timeptr
elemecie ; odejmowanie może teraz umieścić datę poza zakresem.
Te funkcje mogą służyć do weryfikowania i wypełniania tm
struktury. W przypadku powodzenia te funkcje ustawiają wartości tm_wday
i tm_yday
odpowiednio i ustawiają inne składniki do reprezentowania określonego czasu kalendarza, ale z ich wartościami zmuszonymi do normalnych zakresów. Ostateczna tm_mday
wartość wartości nie jest ustawiana do momentu tm_mon
i tm_year
zostanie określona. Podczas określania tm
czasu struktury ustaw pole na tm_isdst
:
Zero (0), aby wskazać, że czas standardowy jest w mocy.
Wartość większa niż 0 wskazująca, że czas letni jest w mocy.
Wartość mniejsza niż zero, aby kod biblioteki czasu wykonywania języka C obliczał, czy czas standardowy, czy czas letni jest w mocy.
Biblioteka czasu wykonywania języka C określi zachowanie czasu letniego ze zmiennej środowiskowej TZ
. Jeśli TZ
nie jest ustawiona, wywołanie GetTimeZoneInformation
interfejsu API Win32 jest używane do uzyskiwania informacji o czasie letnim z systemu operacyjnego. Jeśli wywołanie nie powiedzie się, biblioteka zakłada, że są używane reguły Stany Zjednoczone do implementowania obliczania czasu letniego. tm_isdst
jest polem wymaganym. Jeśli nie zostanie ustawiona, jego wartość jest niezdefiniowana, a wartość zwracana z tych funkcji jest nieprzewidywalna. Jeśli timeptr
wskazuje tm
strukturę zwróconą przez poprzednie wywołanie metody asctime
, gmtime
lub (lub localtime
warianty tych funkcji), tm_isdst
pole zawiera poprawną wartość.
Funkcje gmtime
i localtime
(i _gmtime32
, _gmtime64
_localtime32
, i ) _localtime64
używają pojedynczego buforu na wątek do konwersji. Jeśli podasz ten bufor na mktime
, _mktime32
lub _mktime64
, poprzednia zawartość zostanie zniszczona.
Te funkcje weryfikują swój parametr. Jeśli timeptr
jest wskaźnikiem o wartości null, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Walidacja parametru. Jeśli wykonywanie jest dozwolone do kontynuowania, funkcje zwracają wartość -1 i ustawiają wartość errno
EINVAL
.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
mktime |
<time.h> |
_mktime32 |
<time.h> |
_mktime64 |
<time.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Biblioteki
Wszystkie wersje bibliotek czasu wykonywania języka C.
Przykład
// crt_mktime.c
/* The example takes a number of days
* as input and returns the time, the current
* date, and the specified number of days.
*/
#include <time.h>
#include <stdio.h>
int main( void )
{
struct tm when;
__time64_t now, result;
int days;
char buff[80];
time( &now );
_localtime64_s( &when, &now );
asctime_s( buff, sizeof(buff), &when );
printf( "Current time is %s\n", buff );
days = 20;
when.tm_mday = when.tm_mday + days;
if( (result = mktime( &when )) != (time_t)-1 ) {
asctime_s( buff, sizeof(buff), &when );
printf( "In %d days the time will be %s\n", days, buff );
} else
perror( "mktime failed" );
}
Przykładowe dane wyjściowe
Current time is Fri Apr 25 13:34:07 2003
In 20 days the time will be Thu May 15 13:34:07 2003
Zobacz też
Zarządzanie czasem
asctime
, _wasctime
gmtime
, , _gmtime32
_gmtime64
localtime
, , _localtime32
_localtime64
_mkgmtime
, , _mkgmtime32
_mkgmtime64
time
, , _time32
_time64