mktime, _mktime32, _mktime64
Převeďte místní čas na hodnotu kalendáře.
time_t mktime( struct tm *timeptr ); __time32_t _mktime32( struct tm *timeptr ); __time64_t _mktime64( struct tm *timeptr );
Parametry
- timeptr
Ukazatel na struktura časové; Podívejte se na téma asctime.
Vrácená hodnota
_mktime32Vrátí zadaný kalendář čas kódovaná jako hodnoty typu time_t.Pokud timeptr odkazuje na datum před půlnoc 1. ledna 1970, nebo pokud čas kalendáře nelze vyjádřit, _mktime32 vrátí hodnotu -1 přetypovat na typ time_t.Při použití _mktime32 a v opačném případě timeptr odkazuje na datum po 03:14:07 19 leden klient koordinovaný světový čas (UTC), vrátí -1 přetypovat na typ time_t.
_mktime64Vrátí -1 přetypovat na typ __time64_t -li timeptr odkazuje na datum po 23:59:59, 31. prosince 3000 UTC.
Poznámky
mktime, _mktime32 a _mktime64 funkcí převede zadaný čas strukturu (pravděpodobně neúplný) na kterou odkazuje timeptr do plně definované strukturu pomocí normalizované hodnoty a pak jej do převede time_t kalendáře hodnota času.Převedený čas má stejné kódování jako hodnoty vrácené čas funkce.Původní hodnoty tm_wday a tm_yday komponent timeptr struktury jsou ignorovány a původní hodnoty další komponenty nejsou s omezeným přístupem k jejich normální rozsahy.
mktimeje vložená funkce, která je ekvivalentem _mktime64, pokud _USE_32BIT_TIME_T je definován v takovém případě je ekvivalentní _mktime32.
Po úpravě na čas UTC _mktime32 zpracovává kalendářní data z půlnoc 1. ledna 1970 na 03:14:07 19 leden klient._mktime64kalendářní data z půlnoc 1. ledna 1970 do 31. prosince 3000 23:59:59.Toto nastavení může způsobit tyto funkce, která má být vrácena -1 (přetypovat na typ time_t, __time32_t nebo __time64_t) i v případě, že je můžete zadat datum v rozsahu.Například pokud jste v Káhira, Egypt, který je dvě hodiny před UTC, dvě hodiny se nejprve bude odečítat od datum určíte v timeptr; To může vložte vaše datum je mimo rozsah.
Tyto funkce lze k ověření a vyplnit tm strukturu.Pokud proběhne úspěšně, tyto funkce nastavit hodnoty tm_wday a tm_yday podle potřeby a nastavit další součásti, které představují dobu zadaný kalendář, ale s jejich hodnoty vynuceno jeho normální rozsahy.Konečná hodnota tm_mday není nastaven až tm_mon a tm_year jsou určeny.Při určování tm strukturu čas, nastavte tm_isdst pole:
Nula (0) označuje, že je v platnosti (běžný čas).
Hodnota, která je větší než 0 označuje, že letní čas platit.
Hodnotu menší, než nula. Chcete-li mít kód C run-time library vypočítat, zda (běžný čas) nebo letní čas je v platnosti.
Knihovna C run-time určí chování letní úspory času z TZ proměnná prostředí.Pokud TZ není nastaven, volání rozhraní Win32 API funkce GetTimeZoneInformation slouží k získání letní čas informací z operačního systému.Pokud tento postup selže, knihovny předpokládá, že se používají Spojených států pravidla pro provádění výpočtu letní čas.tm_isdstpole je povinné.Není-li nastavit, jeho hodnota není definováno a návratová hodnota z těchto funkcí nepředvídatelné.Pokud timeptr odkazuje na tm struktury vrácen předchozím voláním do asctime, gmtime, nebo localtime (nebo variant z těchto funkcí), tm_isdst pole obsahuje správnou hodnotu.
Všimněte si, že gmtime a localtime (a _gmtime32, _gmtime64, _localtime32, a _localtime64) používat pro převod do jedné vyrovnávací paměti pro vlákno.Pokud zadáte této vyrovnávací paměti pro mktime, _mktime32 nebo _mktime64, předchozí obsah budou ztraceny.
Tyto funkce ověření svého parametru.Pokud timeptr je ukazatel s hodnotou null, je volána obslužná rutina neplatný parametr, jak je popsáno v Ověření parametru.Pokud je povoleno spuštění chcete-li pokračovat, funkce vrátit hodnotu -1 a nastavte errno k EINVAL.
Požadavky
Rutina |
Požadovaný hlavičkový soubor |
---|---|
mktime |
< time.h > |
_mktime32 |
< time.h > |
_mktime64 |
< time.h > |
Další informace o kompatibilitě naleznete v úvodu tématu Kompatibilita.
Knihovny
Všechny verze knihoven C run-time.
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" );
}
Vzorový 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
Ekvivalent v rozhraní .NET Framework
Viz také
Referenční dokumentace
localtime, _localtime32, _localtime64