Udostępnij za pośrednictwem


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 _mktime64funkcji , 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 timeptrelemecie ; 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, gmtimelub (lub localtime warianty tych funkcji), tm_isdst pole zawiera poprawną wartość.

Funkcje gmtime i localtime (i _gmtime32, _gmtime64_localtime32, i ) _localtime64uż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