Condividi tramite


_strtime_s, _wstrtime_s

Copiare il tempo corrente in un buffer. Queste sono versioni di _strtime, _wstrtime con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.

errno_t _strtime_s(
   char *buffer,
   size_t numberOfElements
);
errno_t _wstrtime_s(
   wchar_t *buffer,
   size_t numberOfElements
);
template <size_t size>
errno_t _strtime_s(
   char (&buffer)[size]
); // C++ only
template <size_t size>
errno_t _wstrtime_s(
   wchar_t (&buffer)[size]
); // C++ only

Parametri

  • [out] buffer
    Un buffer, lungo almeno 10 byte, in cui viene scritta l'ora.

  • [in] numberOfElements
    Dimensione del buffer.

Valore restituito

Zero se ha esito positivo.

Se si verifica una condizione di errore, viene richiamato il gestore del parametro non valido, come descritto in Convalida dei parametri. Il valore restituito è un codice di errore in presenza di un fallimento. I codici di errore vengono definiti in ERRNO.H; vedere la tabella riportata di seguito per gli esatti errori generati da questa funzione. Per ulteriori informazioni sui codici di errore, consultare costanti di errno.

Condizioni di errore

buffer

numberOfElements

Restituzione

Contenuto di buffer.

NULL

(qualsiasi)

EINVAL

Non modificato

Non NULL (che punta a un buffer valido)

0

EINVAL

Non modificato

Non NULL (che punta a un buffer valido)

0 < dimensione < 9

EINVAL

Stringa vuota.

Non NULL (che punta a un buffer valido)

Dimensione > 9

0

Ora corrente formattata come specificato nei commenti

Problemi relativi alla sicurezza

Passando un valore non null al buffer si avrà una violazione di accesso se il parametro numberOfElements è maggiore di 9.

Passare un valore per numberOfElements di dimensione maggiore della dimensione effettiva del buffer provocherà un sovraccarico del buffer.

Note

Queste funzioni forniscono versioni più sicure di _strtime e di _wstrtime. La funzione di _strtime_s copia l'ora locale corrente nel buffer puntato da timestr*.* Il tempo viene formattato come hh:mm:ss in cui hh è composto da due cifre che rappresentano l'ora in notazione di 24 ore, mm sono due cifre che rappresentano i minuti dopo l'ora e ss sono due cifre che rappresentano i secondi. Ad esempio, la stringa 18:23:44 rappresenta 23 minuti e 44 secondi dopo le 6 del pomeriggio Il buffer deve avere almeno di 9 byte di lunghezza; la dimensione effettiva è specificata dal secondo parametro.

_wstrtime è una versione a caratteri estesi di _strtime; gli argomenti e i valori restituiti di _wstrtime sono stringhe con caratteri estesi. Altrimenti queste funzioni si comportano in modo identico.

In C++ l'utilizzo di queste funzioni è semplificato dagli overload dei modelli. Gli overload possono dedurre la lunghezza del buffer automaticamente (eliminando la necessità di specificare un argomento di dimensione) e possono sostituire automaticamente le funzioni precedenti e non sicure con le controparti più recenti e sicure. Per ulteriori informazioni, vedere Overload di modelli sicuri.

Mapping di routine a Testo generico:

Routine TCHAR.H

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_tstrtime_s

_strtime_s

_strtime_s

_wstrtime_s

Requisiti

Routine

Intestazione obbligatoria

_strtime_s

<time.h>

_wstrtime_s

<time.h> o <wchar.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'Introduzione.

Esempio

// strtime_s.c

#include <time.h>
#include <stdio.h>

int main()
{
    char tmpbuf[9];
    errno_t err;

    // Set time zone from TZ environment variable. If TZ is not set,
    // the operating system is queried to obtain the default value 
    // for the variable. 
    //
    _tzset();

    // Display operating system-style date and time. 
    err = _strtime_s( tmpbuf, 9 );
    if (err)
    {
       printf("_strdate_s failed due to an invalid argument.");
      exit(1);
    }
    printf( "OS time:\t\t\t\t%s\n", tmpbuf );
    err = _strdate_s( tmpbuf, 9 );
    if (err)
    {
       printf("_strdate_s failed due to an invalid argument.");
       exit(1);
    }
    printf( "OS date:\t\t\t\t%s\n", tmpbuf );

}
  

Equivalente .NET Framework

Vedere anche

Riferimenti

Gestione del tempo

asctime_s, _wasctime_s

ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s

gmtime_s, _gmtime32_s, _gmtime64_s

localtime_s, _localtime32_s, _localtime64_s

mktime, _mktime32, _mktime64

time, _time32, _time64

_tzset