mktime
, , _mktime32
_mktime64
Převeďte místní čas na hodnotu kalendáře.
Syntaxe
time_t mktime(
struct tm *timeptr
);
__time32_t _mktime32(
struct tm *timeptr
);
__time64_t _mktime64(
struct tm *timeptr
);
Parametry
timeptr
Ukazatel na časovou strukturu; viz .asctime
Vrácená hodnota
_mktime32
vrátí zadaný čas kalendáře kódovaný jako hodnota typu time_t
. Pokud timeptr
odkazuje na datum před půlnocí, 1. ledna 1970 nebo pokud kalendářní čas nemůže být reprezentován, _mktime32
vrátí hodnotu -1 přetypování na typ time_t
. Při použití _mktime32
a pokud timeptr
odkazuje na datum po 23:59:59 leden 18, 2038, Koordinovaný univerzální čas (UTC), vrátí -1 přetypování na typ time_t
.
_mktime64
vrátí přetypování -1, pokud __time64_t
timeptr
odkazuje na datum po 23:59:59, 31. prosince 3000 UTC.
Poznámky
Funkce mktime
a _mktime64
funkce převedou zadanou časovou strukturu (pravděpodobně neúplnou) na timeptr
plně definovanou strukturu s normalizovanými hodnotami a pak ji převede na hodnotu kalendářního time_t
času. _mktime32
Převedený čas má stejné kódování jako hodnoty vrácené time
funkcí. Původní hodnoty tm_wday
a tm_yday
součásti timeptr
struktury jsou ignorovány a původní hodnoty ostatních součástí nejsou omezeny na jejich normální rozsahy.
mktime
je vložená funkce, která je ekvivalentní _mktime64
, pokud _USE_32BIT_TIME_T
není definována, v takovém případě je ekvivalentní _mktime32
.
Po úpravě utc _mktime32
zpracovává data od půlnoci, 1. ledna 1970 do 23:59:59 18. ledna 2038 UTC. _mktime64
zpracovává data od půlnoci, 1. ledna 1970 do 23:59:59, 31. prosince 3000. Tato úprava může způsobit, že tyto funkce vrátí hodnotu -1 (přetypování na time_t
) __time32_t
__time64_t
i když zadané datum spadá do rozsahu. Pokud jste například v Káhiře, Egyptu, což je před časem UTC dvě hodiny, odečtou se nejdříve dvě hodiny od zadaného data timeptr
. Odčítání teď může zadat datum mimo rozsah.
Tyto funkce lze použít k ověření a vyplnění tm
struktury. V případě úspěchu tyto funkce nastaví hodnoty a tm_wday
tm_yday
podle potřeby a nastaví ostatní komponenty tak, aby představovaly zadaný čas kalendáře, ale s jejich hodnotami vynucenými k normálním rozsahům. Konečná hodnota tm_mday
není nastavená, dokud tm_mon
nebude určena a tm_year
nebude určena. Při zadávání tm
času struktury nastavte tm_isdst
pole na:
Nula (0) označující, že je běžný čas v platnosti.
Hodnota větší než 0 značí, že letní čas je v platnosti.
Hodnota menší než nula, aby kód knihovny runtime jazyka C počítaly, jestli se používá standardní čas nebo letní čas.
Knihovna runtime jazyka C určí chování letního času z TZ
proměnné prostředí. Pokud TZ
není nastavené, volání GetTimeZoneInformation
rozhraní API Win32 slouží k získání informací o letním čase z operačního systému. Pokud volání selže, knihovna předpokládá, že se použijí pravidla USA pro implementaci výpočtu letního času. tm_isdst
je povinné pole. Pokud není nastavená, její hodnota není definována a návratová hodnota z těchto funkcí je nepředvídatelná. Pokud timeptr
odkazuje na tm
strukturu vrácenou předchozím voláním asctime
, gmtime
nebo localtime
(nebo varianty těchto funkcí), tm_isdst
pole obsahuje správnou hodnotu.
Funkce gmtime
a localtime
(a _gmtime32
, _gmtime64
, _localtime32
a _localtime64
) používají pro převod jednu vyrovnávací paměť na vlákno. Pokud tuto vyrovnávací paměť zadáte do mktime
nebo _mktime64
_mktime32
, předchozí obsah se zničí.
Tyto funkce ověřují svůj parametr. Pokud timeptr
je ukazatel null, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je možné pokračovat spuštěním, funkce vrátí hodnotu -1 a nastaví errno
se na EINVAL
hodnotu .
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
mktime |
<time.h> |
_mktime32 |
<time.h> |
_mktime64 |
<time.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Knihovny
Všechny verze knihoven runtime jazyka C.
Příklad
// 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" );
}
Ukázkový výstup
Current time is Fri Apr 25 13:34:07 2003
In 20 days the time will be Thu May 15 13:34:07 2003
Viz také
Správa času
asctime
, _wasctime
gmtime
, , _gmtime32
_gmtime64
localtime
, , _localtime32
_localtime64
_mkgmtime
, , _mkgmtime32
_mkgmtime64
time
, , _time32
_time64