Condividi tramite


asctime_s, _wasctime_s

Convertire una struttura di tempo tm in una stringa di caratteri. Queste funzioni sono versioni di asctime, _wasctime con dei miglioramenti nella sicurezza come descritto in Funzionalità di sicurezza in 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

Parametri

  • buffer
    [out] Puntatore ad un buffer per archiviare il risultato della stringa di caratteri. Questa funzione presuppone un puntatore ad una posizione di memoria valida con una dimensione specificata da numberOfElements.

  • numberOfElements
    [in] La dimensione del buffer utilizzato per archiviare il risultato.

  • _tm
    [in] Struttura DateTime Questa funzione presuppone un puntatore a un oggetto valido struct tm .

Valore restituito

Zero se ha esito positivo. Se è presente un errore, viene invocato il gestore di parametro non valido, come descritto in Convalida dei parametri. Se viene permesso all'esecuzione di continuare, il valore restituito è un codice di errore. I codici di errore sono definiti in ERRNO.H. Per ulteriori informazioni, vedere Costanti errno. I codici di errore restituiti per ogni condizione di errore vengono mostrati nella tabella seguente.

Condizioni di errore

buffer

numberOfElements

tm

Restituzione

Valore in buffer

NULL

Uno

Uno

EINVAL

Non modificato

NonNULL (punta a della memoria valida)

0

Uno

EINVAL

Non modificato

Non NULL

0< dimensione < 26

Uno

EINVAL

Stringa vuota.

Non NULL

>= 26

NULL

EINVAL

Stringa vuota.

Non NULL

>= 26

Struttura di tempo non valida o valori fuori dall'intervallo per i componenti del tempo

EINVAL

Stringa vuota.

Nota

Le condizioni di errore per wasctime_s sono simili a quelle per asctime_s con l'eccezione che il limite di dimensione viene misurato in parole.

Note

La funzione asctime converte un'ora archiviata come struttura in una stringa di caratteri. Il valore _tm in genere viene ottenuto da una chiamata a gmtime o da una chiamata a localtime. Entrambe le funzioni possono essere utilizzate per riempire una struttura tm, come definito in. TIME.H.

membro del timeptr

Valore

tm_hour

Ore da mezzanotte (0-23)

tm_isdst

Positivo se l'ora legale è attiva, 0 altrimenti; negativo se lo stato dell'ora legale è sconosciuto. La libreria di runtime C utilizza le direttive degli Stati Uniti per implementare il calcolo dell'ora legale (DST).

tm_mday

Giorno del mese (1–31)

tm_min

Minuti dopo l'ora (0-59)

tm_mon

Mese (0-11; Gennaio = 0)

tm_sec

Secondi dopo il minuto (0-59)

tm_wday

Giorno della settimana (0–6; Domenica = 0)

tm_yday

Giorno dell'anno (0–365; Gennaio 1 = 0)

tm_year

Anno (anno corrente meno 1900)

Una stringa di caratteri convertita viene regolata in base alle impostazioni del fuso orario locali. Vedere time, _time32, _time64, _ftime, _ftime32, _ftime64e le funzioni localtime_s, _localtime32_s, _localtime64_s per informazioni sulla configurazione dell'ora locale e la funzione _tzset per informazioni sulla definizione dell'ambiente del fuso orario e delle variabili globali,

Il risultato della stringa fornito da asctime_s contiene esattamente 26 caratteri e ha il seguente formato Wed Jan 02 02:03:55 1980\n\0. Viene utilizzato un orario nel formato a 24 ore. Tutti i campi hanno una larghezza costante. Il carattere di nuova riga e il carattere null occupano le ultime due posizioni della stringa. Il valore passato come secondo parametro deve essere almeno così grande. Se dovesse essere inferiore, verrà restituito il codice di errore EINVAL.

_wasctime_s è una versione a caratteri di tipo "wide" di asctime_s. _wasctime_s e asctime_s si comportano in modo identico in caso contrario.

Mapping di routine a Testo generico

Routine TCHAR.H

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_tasctime_s

asctime_s

asctime_s

_wasctime_s

In C++, l'utilizzo di queste funzioni viene semplificato da overload del modello; gli overload possono dedurre la lunghezza del buffer automaticamente, eliminando la necessità di specificare un argomento per la dimensione. Per ulteriori informazioni, vedere Overload di modelli sicuri.

Requisiti

Routine

Intestazione obbligatoria

asctime_s

<time.h>

_wasctime_s

<time.h> o <wchar.h>

Sicurezza

Se il puntatore del buffer non è NULL e il puntatore non punta ad un buffer valido, la funzione sovrascriverà qualsiasi cosa ci sia a quella locazione. Ciò può generare una violazione di accesso.

Un sovraccarico del buffer può verificarsi se la dimensione dell'argomento passato è maggiore della dimensione del buffer.

Esempio

Questo programma imposta l'ora di sistema in un long integer aclock, la traduce nella struttura newtime e quindi la convertite in stringa per l'output, utilizzando la funzione asctime_s.

// 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;
}
  

Equivalente .NET Framework

Vedere anche

Riferimenti

Gestione del tempo

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