strftime, wcsftime, _strftime_l, _wcsftime_l
Formattare una stringa di data e ora.
size_t strftime(
char *strDest,
size_t maxsize,
const char *format,
const struct tm *timeptr
);
size_t _strftime_l(
char *strDest,
size_t maxsize,
const char *format,
const struct tm *timeptr,
_locale_t locale
);
size_t wcsftime(
wchar_t *strDest,
size_t maxsize,
const wchar_t *format,
const struct tm *timeptr
);
size_t _wcsftime_l(
wchar_t *strDest,
size_t maxsize,
const wchar_t *format,
const struct tm *timeptr,
_locale_t locale
);
Parametri
strDest
Stringa di output.maxsize
Dimensione del buffer strDest, misurata in caratteri (char o wchart_t).format
Stringa di controllo del formato.timeptr
tm struttura dei dati.locale
Impostazioni locali da utilizzare.
Valore restituito
strftime restituisce il numero di caratteri posizionato in strDest e wcsftime restituisce il numero corrispondente di caratteri wide.
Se il numero totale di caratteri, inclusi il carattere di terminazione null, è più di maxsize, sia strftime che wcsftime restituisce 0 e il contenuto di strDest è indeterminato.
Il numero di caratteri in strDest è uguale al numero di caratteri letterali in format nonché di tutti i caratteri che possono essere aggiunti a format tramite i codici di formattazione. Il carattere di terminazione Null di una stringa non è incluso nel valore restituito.
Note
Le funzioni wcsftime e strftime consentono di formattare il valore temporale tm in timeptr come l'argomento format fornito ed archiviano il risultato nel buffer strDest*.* Al massimo, i caratteri di maxsize vengono inseriti nella stringa. Per una descrizione dei campi della struttura timeptr, vedere asctime. wcsftime è l'equivalente a caratteri estesi di strftime; il suo puntatore di stringa passato come argomento punta ad una stringa di caratteri estesi. Altrimenti queste funzioni si comportano in modo identico.
Nota
Nelle versioni precedenti a Visual C++ 2005, la documentazione descriveva il parametro format di wcsftime come dotata del tipo di dati const wchar_t *, ma in realtà l'implementazione attuale del tipo di dati format è const char *.L'implementazione del tipo di dati formatè stata aggiornata per riflettere la documentazione precedente e corrente, ovvero, const wchar_t *.
Questa funzione convalida i parametri. Se strDest, format, otimeptr è un puntatore null, o se la struttura dei dati tm di destinazione di timeptr non è valida (ad esempio, se contiene valori esterni all'intervallo per l'ora o la data), oppure se la stringa format contiene un codice di formattazione non valido, il gestore del parametro non valido viene invocato, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione restituisce 0 e imposta errno su EINVAL.
Mapping di routine di testo generico
Routine TCHAR.H |
_UNICODE & _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tcsftime |
strftime |
strftime |
wcsftime |
L'argomento format è costituito da uno o più codici; come in printf, i codici di formattazione sono preceduti da un segno di percentuale (%). I caratteri che non iniziano con % vengono copiati senza modifiche in strDest*.* La categoria LC_TIME delle impostazioni locali correnti influisce sulla formattazione di strftime. (Per ulteriori informazioni su LC_TIME, vedere setlocale.) Le funzioni senza il suffisso _l utilizzano le impostazioni locali attualmente impostate. Le versioni di queste funzioni con il suffisso _l sono identiche ad eccezione per il fatto che prendono il parametro delle impostazioni locali e lo usano al posto di quello corrente. Per ulteriori informazioni, vedere Impostazioni locali.
I codici di formattazione per strftime vengono elencati di seguito:
%a
Nome abbreviato del giorno della settimana%A
Nome completo del giorno della settimana%b
Nome abbreviato del mese%B
Nome completo del mese%c
Rappresentazione di data e ora adatta alle impostazioni locali%d
Giorno del mese come numero decimale (01 - 31)%H
Ora nel formato a 24 ore (00 - 23)%I
Ora nel formato a 12 ore (01 - 12)%j
Giorno dell'anno come numero decimale (001 - 366)%m
Mese come numero decimale (01 - 12)%M
Minuti come numero decimale (00 - 59)%p
Indicatore di A.M. /P.M. per le impostazioni locali correnti dell'orario nel formato a 12 ore%S
In secondo luogo come numero decimale (00 - 59)%U
Settimana dell'anno come numero decimale, con Domenica come primo giorno della settimana (00 - 53)%w
Giorno della settimana come numero decimale (0 - 6; Domenica corrisponde allo 0)%W
Settimana dell'anno come numero decimale, con Lunedì come primo giorno della settimana (00 - 53)%x
Rappresentazione della data per le impostazioni locali correnti%X
Rappresentazione dell'ora per le impostazioni locali correnti%y
Anno senza secolo, come numero decimale (00 - 99)%Y
Anno con secolo, come numero decimale%z, %Z
Qualsiasi nome del fuso orario o abbreviazione del fuso orario, a seconda delle impostazioni del Registro di sistema; nessun carattere se il fuso orario è sconosciuto%%
Segno di percentuale
Come nella funzione printf, il flag # può essere preceduto da qualsiasi codice di formattazione. In tal caso, il significato del codice di formattazione viene modificato come segue.
Codice formato |
Significato |
---|---|
%#a, %#A, %#b, %#B, %#p, %#X, %#z, %#Z, %#% |
Il flag # viene ignorato. |
%#c |
Rappresentazione estesa di data ed ora, appropriata per le impostazioni locali correnti. Ad esempio: "Martedì 14 marzo 1995, 12:41:29". |
%#x |
Rappresentazione estesa della data, appropriata per le impostazioni locali correnti. Ad esempio: "Martedì 14 marzo 1995". |
%#d, %#H, %#I, %#j, %#m, %#M, %#S, %#U, %#w, %#W, %#y, %#Y |
Rimuovere gli zeri iniziali se presenti. |
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
strftime |
<time.h> |
wcsftime |
<time.h> o <wchar.h> |
_strftime_l |
<time.h> |
_wcsftime_l |
<time.h> o <wchar.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'Introduzione.
Esempio
Vedere l'esempio relativo a time.