Sdílet prostřednictvím


asctime_s, _wasctime_s

Převést tm čas struktury na řetězec znaků.Tyto funkce jsou verze asctime, _wasctime s vylepšení zabezpečení, jak je popsáno v Funkce zabezpečení v CRT.

errno_t asctime_s( 
   char* buffer,
   size_t numberOfElements,
   const struct tm *_tm 
);
errno_t _wasctime_s( 
   wchar_t* buffer,
   size_t numberOfElements
   const struct tm *_tm 
);
template <size_t size>
errno_t asctime_s( 
   char (&buffer)[size],
   const struct tm *_tm 
); // C++ only
template <size_t size>
errno_t _wasctime_s( 
   wchar_t (&buffer)[size],
   const struct tm *_tm 
); // C++ only

Parametry

  • buffer
    [out] Ukazatel na vyrovnávací paměť pro ukládání výsledků řetězec znaků.Tato funkce předpokládá ukazatel do paměti platné umístění určené velikosti numberOfElements.

  • numberOfElements
    [v] Velikost vyrovnávací paměti používané k ukládání výsledků.

  • _tm
    [v] Čas a datum strukturu.Tato funkce předpokládá platný ukazatel structtm objektu.

Vrácená hodnota

0 v případě úspěchu.Pokud dojde k selhání, vyvolán neplatný parametr obslužné rutiny, jak je popsáno v Ověření parametru.Pokud je povoleno pokračovat v provádění, vrácená hodnota je kód chyby.Kódy chyb jsou definovány v kód chyby.H.Další informace naleznete v tématu errno – konstanty.V následující tabulce jsou uvedeny skutečné chybové kódy, vrácené pro každou podmínku chyby.

Chybové podmínky

buffer

numberOfElements

tm

Výsledek

Hodnota vbuffer

NULL

Všechny

Všechny

EINVAL

Nezměněno

Ne NULL (odkazuje na platný paměti)

0

Všechny

EINVAL

Nezměněno

NeNULL

0< velikost < 26

Všechny

EINVAL

Prázdný řetězec

NeNULL

>= 26

NULL

EINVAL

Prázdný řetězec

NeNULL

>= 26

Neplatné časové struktury nebo hodnoty mimo rozsah pro komponenty čas

EINVAL

Prázdný řetězec

[!POZNÁMKA]

Chybové stavy pro wasctime_s jsou podobné asctime_s s tím rozdílem, že maximální velikost se měří ve slovech.

Poznámky

asctime Funkce převede čas uložené ve struktuře na řetězec znaků._tm Hodnota je obvykle získán z volání gmtime nebo localtime.Obě funkce lze použít k vyplnění tm strukturu, jak je definováno v čase.H.

Členské timeptr

Value

tm_hour

Hodiny od půlnoci (0-23)

tm_isdst

Pozitivní, je-li letní čas v platnosti; 0, pokud letního času není v platnosti; negativní stav letního času neznámý.Knihovny běhu jazyka C předpokládá Spojené státy prováděcí pravidla výpočtu letní čas (DST).

tm_mday

Den v měsíci (1-31)

tm_min

Minut po hodině (0-59)

tm_mon

Měsíc (0 – 11; Ledna = 0)

tm_sec

Sekund po minutě (0-59)

tm_wday

Den týdne (0 – 6; Neděle = 0)

tm_yday

Den roku (0-365; 1. ledna = 0)

tm_year

Rok (aktuální rok minus 1900)

Převedený textový řetězec je také upravena podle nastavení zóny Místní čas.Najdete time, _time32, _time64, _ftime, _ftime32, _ftime64, a localtime_s, _localtime32_s, _localtime64_s funkce informace o konfiguraci místního času a _tzset funkce informace o definování časové pásmo prostředí a globální proměnné.

Výsledek řetězce vyrobené asctime_s obsahuje přesně 26 znaků a má tvar Wed Jan 02 02:03:55 1980\n\0.Slouží 24 hodin.Všechna pole nemají konstantní šířce.Znak nového řádku a znak null zaujímají pozice poslední dva řetězce.Hodnota předaná jako druhý parametr by měl být alespoň tomto velký.Pokud je menší, kód chyby EINVAL, bude vrácena.

_wasctime_s je širokoznaká verze asctime_s._wasctime_s a asctime_s se jinak chovají stejně.

Rutinní mapování obecného textu

Rutina TCHAR.H

_UNICODE & _MBCS není definováno

_MBCS definováno

_UNICODE definováno

_tasctime_s

asctime_s

asctime_s

_wasctime_s

V jazyce C++ je použití těchto funkcí zjednodušeno díky přetížením šablony; přetížení mohou odvodit délku vyrovnávací paměti automaticky, čímž eliminují nutnost určit velikost argumentu.Další informace naleznete v tématu Přetížení zabezpečení šablony.

Požadavky

Rutina

Požadované záhlaví

asctime_s

<time.h>

_wasctime_s

<Time.h> nebo <wchar.h>

Zabezpečení

Ukazatel vyrovnávací paměti, není-li NULL a ukazatel neodkazuje na platný vyrovnávací paměť, funkce přepíše vše, co je na místě.Také to může způsobit narušení přístupu.

A přetečení vyrovnávací paměti může dojít, pokud předaný argument velikost je větší než skutečná velikost vyrovnávací paměti.

Příklad

Tento program umístí systémový čas na dlouhé celé číslo aclock, překládá do struktury newtime a pak jej převede na řetězec formuláře pro výstup, použití asctime_s funkce.

// crt_asctime_s.c
#include <time.h>
#include <stdio.h>

struct tm newtime;
__time32_t aclock;

int main( void )
{
   char buffer[32];
   errno_t errNum;
   _time32( &aclock );   // Get time in seconds.
   _localtime32_s( &newtime, &aclock );   // Convert time to struct tm form.

   // Print local time as a string.

   errNum = asctime_s(buffer, 32, &newtime);
   if (errNum)
   {
       printf("Error code: %d", (int)errNum);
       return 1;
   }
   printf( "Current date and time: %s", buffer );
   return 0;
}
  

Ekvivalent v rozhraní .NET Framework

Viz také

Referenční dokumentace

Správa času

ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s

_ftime, _ftime32, _ftime64

gmtime_s, _gmtime32_s, _gmtime64_s

localtime_s, _localtime32_s, _localtime64_s

time, _time32, _time64

_tzset