mktime, _mktime32, _mktime64
Místní čas převeďte hodnotu kalendář.
time_t mktime(
struct tm *timeptr
);
__time32_t _mktime32(
struct tm *timeptr
);
__time64_t _mktime64(
struct tm *timeptr
);
Parametry
- timeptr
Ukazatel na časové struktura; Viz asctime.
Vrácená hodnota
_mktime32 vrátí čas zadaný kalendář kódovaný jako hodnotu typu time_t.Pokud timeptr odkazuje na datum před půlnoci 1. ledna 1970, nebo pokud kalendář čas nemůže být zastoupeni, _mktime32 vrátí hodnotu –1 odevzdaných zadejte time_t.Při použití _mktime32 a timeptr odkazuje na datum po 03: 14: 07 19 01.01.08, koordinovaný světový čas (UTC) vrátí –1 odevzdaných zadejte time_t.
_mktime64Vrátí –1 odevzdaných zadejte __time64_t -li timeptr odkazuje na datum po 23: 59: 59, do 31. prosince 3000 UTC.
Poznámky
mktime, _Mktime32 a _mktime64 funkce převést zadaný čas struktura (případně nedokončený) odkazuje timeptr do plně definovanou struktura s normalizovaných hodnot a převede jej time_t kalendář časová hodnota.Převedené čas má stejné kódování jako hodnoty vrácené Časfunkce. Původní hodnoty tm_wday a tm_yday součásti timeptrstruktura jsou ignorovány a původní hodnoty jiné součásti nejsou omezeny na jejich normální rozsahy.
mktimeje vloženýfunkce , která je ekvivalentní _mktime64, pokud _USE_32BIT_TIME_T je definován v takovém případě je ekvivalentní _mktime32.
Po úpravě na UTC _mktime32 zpracovává data od půlnoci 1. ledna 1970 na 03: 14: 07 01.01.08 19._mktime64kalendářní data od půlnoci 1. ledna 1970 do 31. prosince 3000 23: 59: 59.Tato úprava může způsobit tyto funkce vrátit -1 (přetypovat na time_t, __time32_t nebo __time64_t), přestože je datum, které zadáte v rozsahu.Například v Káhiře v Egyptě, který je dvě hodiny před ČASEM, dvě hodiny budou nejprve odečtena od data v timeptr; Nyní to může uvést vaše datum je mimo rozsah.
Tyto funkce mohou použít k ověřit a vyplňte tmstruktura. Pokud úspěšný, tyto funkce nastavit hodnoty tm_wday a tm_yday podle potřeby a nastavit další komponenty představují čas zadaný kalendář, ale s jejich hodnotami nuceni normální rozsahy.Konečná hodnota tm_mday není nastavena do tm_mon a tm_year , jsou určeny.Při zadávání tm struktura čas nastaven tm_isdstpole :
Nula (0) označuje, že je v platnosti standardní čas.
Hodnota větší než 0 označuje, že je v platnosti letní čas.
Hodnota menší než nula , mít kód C Runtime knihovna vypočítat, zda standardní čas nebo letní čas je v platnosti.
C Runtime knihovna určuje chování letní úspory času z TZproměnnáprostředí. Pokud TZ není nastavena, Win32 volání rozhraní APIProcedura GetTimeZoneInformation se používá na letní čas informace z operačního systému. Pokud se to nezdaří, knihovna se předpokládá, že jsou použity Spojené státy prováděcí pravidla k výpočtu letní čas.tm_isdst je povinné pole.Pokud není nastavena, jeho hodnota je undefined a vrácená hodnota z těchto funkcí nepředvídatelné.Pokud timeptr odkazuje tmstruktura vrácené předchozí volání k asctime, gmtime, nebo localtime (nebo variant těchto funkcí) tm_isdstpole obsahuje správnou hodnotu.
Všimněte si, že gmtime a localtime (a _gmtime32, _gmtime64, _localtime32, a _localtime64) použít pro převod do jedné vyrovnávací paměti na vlákno .Je-li k této vyrovnávací paměti mktime, _mktime32 nebo _mktime64, předchozí obsah jsou zničeny.
Tyto funkce ověřit jejich parametr.Pokud timeptr nulový ukazatelje neplatnýpopisovačparametr vyvolání popsaným v Ověření parametrů. Pokud je povoleno spuštění pokračovat, funkce vrátí -1 a errno na EINVAL.
Požadavky
Rutina |
Požadované hlavička |
---|---|
mktime |
<time.h> |
_mktime32 |
<time.h> |
_mktime64 |
<time.h> |
Další informace o kompatibilitě, viz Compatibility v úvodu.
Knihovny
Všechny verze C Runtime knihovny.
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
System::datetime::datetime
Viz také
Referenční dokumentace
localtime, _localtime32, _localtime64