Sdílet prostřednictvím


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

System::DateTime::DateTime

Viz také

Referenční dokumentace

Správa času

asctime, _wasctime

gmtime, _gmtime32, _gmtime64

localtime, _localtime32, _localtime64

_mkgmtime, _mkgmtime32, _mkgmtime64

time, _time32, _time64