strftime
, wcsftime
, _strftime_l
_wcsftime_l
Formatta una stringa dell'ora.
Sintassi
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
Dimensioni del buffer strDest
, in caratteri (char
o wchar_t
).
format
Stringa di controllo del formato.
timeptr
Struttura di dati tm
.
locale
Impostazioni locali da usare.
Valore restituito
strftime
restituisce il numero di caratteri in strDest
e wcsftime
restituisce il numero di caratteri wide corrispondente.
Se il numero totale di caratteri, incluso il carattere di terminazione Null, è maggiore di maxsize
, sia strftime
che wcsftime
restituiscono 0 e il contenuto di strDest
è indeterminato.
Il numero di caratteri in strDest
è uguale al numero di caratteri letterali in format
, più tutti i caratteri che possono essere aggiunti a format
tramite codici di formattazione. Il valore null di terminazione di una stringa non viene conteggiato nel valore restituito.
Osservazioni:
Le strftime
funzioni e wcsftime
formattano il tm
valore dell'ora in in timeptr
base all'argomento fornito format
e archiviano il risultato nel buffer strDest
. Nella stringa vengono inseriti al massimo maxsize
. Per una descrizione dei campi nella timeptr
struttura, vedere asctime
. wcsftime
è l'equivalente di caratteri wide di strftime
. L'argomento puntatore di stringa corrispondente punta a una stringa di caratteri wide. A parte ciò, queste funzioni si comportano in modo identico.
Questa funzione convalida i relativi parametri. Se strDest
, format
o timeptr
è un puntatore Null o se la tm
struttura dei dati indirizzata da timeptr
non è valida (ad esempio, se contiene valori di intervallo non validi per l'ora o la data) o se la format
stringa contiene un codice di formattazione non valido, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione restituisce 0 e imposta errno
su EINVAL
.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Mapping di routine di testo generico
TCHAR.H routine |
_UNICODE e _MBCS non definito |
_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 dell'output di strftime
. Per altre informazioni su LC_TIME
, vedere setlocale
.) Le strftime
funzioni e wcsftime
usano le impostazioni locali attualmente impostate. Le _strftime_l
versioni e _wcsftime_l
di queste funzioni sono identiche, ad eccezione del fatto che accettano le impostazioni locali come parametro e lo usano invece delle impostazioni locali attualmente impostate. Per altre informazioni, vedere Locale.
Le strftime
funzioni supportano questi codici di formattazione:
Codice | Stringa di sostituzione |
---|---|
%a |
Nome abbreviato del giorno della settimana nelle impostazioni locali |
%A |
Nome completo del giorno della settimana nelle impostazioni locali |
%b |
Nome del mese abbreviato nelle impostazioni locali |
%B |
Nome completo del mese nelle impostazioni locali |
%c |
Rappresentazione di data e ora appropriata per le impostazioni locali |
%C |
L'anno diviso per 100 e troncato a un numero intero, come numero decimale (00−99) |
%d |
Giorno del mese come numero decimale (01 - 31) |
%D |
Equivalente a %m/%d/%y |
%e |
Giorno del mese come numero decimale (1 - 31), dove le singole cifre sono precedute da uno spazio |
%F |
Equivalente a %Y-%m-%d |
%g |
Le ultime 2 cifre dell'anno basato su settimana ISO 8601 come numero decimale (00 - 99) |
%G |
Anno basato su settimana ISO 8601 come numero decimale |
%h |
Nome del mese abbreviato (equivalente a %b ) |
%H |
Ora in formato 24 ore (00 - 23) |
%I |
Ora in formato 12 ore (01 - 12) |
%j |
Giorno dell'anno come numero decimale (001 - 366) |
%m |
Mese come numero decimale (01 - 12) |
%M |
Minuto come numero decimale (00 - 59) |
%n |
Carattere di nuova riga (\n ) |
%p |
Indicatore delle impostazioni locali A.M./P.M. per 12 ore |
%r |
Ora dell'orologio di 12 ore delle impostazioni locali |
%R |
Equivalente a %H:%M |
%S |
Secondo come numero decimale (00 - 59) |
%t |
Carattere di tabulazioni orizzontale (\t ) |
%T |
Equivalente a %H:%M:%S , il formato ora ISO 8601 |
%u |
ISO 8601 giorno feriale come numero decimale (1 - 7; Lunedì è 1) |
%U |
Numero di settimana dell'anno come numero decimale (00 - 53), dove la prima domenica è il primo giorno della settimana 1 |
%V |
Numero di settimana ISO 8601 come numero decimale (00 - 53) |
%w |
Giorno feriale come numero decimale (0 - 6; Domenica è 0) |
%W |
Numero di settimana dell'anno come numero decimale (00 - 53), dove il primo lunedì è il primo giorno della settimana 1 |
%x |
Rappresentazione della data per le impostazioni locali |
%X |
Rappresentazione dell'ora per le impostazioni locali |
%y |
Anno senza secolo, come numero decimale (00 - 99) |
%Y |
Anno con il secolo, come numero decimale |
%z |
Offset dall'ora UTC in formato ISO 8601; nessun carattere se il fuso orario è sconosciuto |
%Z |
Il nome del fuso orario o l'abbreviazione del fuso orario delle impostazioni locali, 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 usato come prefisso per qualsiasi codice di formattazione. In questo caso, il significato del codice di formato viene modificato come segue.
Formattare il codice | significato |
---|---|
%#a , , , , , %#Z %#p %#n %#w %#X %#u %#t %#z %#h %#G %#g %#B %#A %#b %#% |
Il flag # viene ignorato. |
%#c |
Rappresentazione di data e ora lunghe, appropriata per le impostazioni locali. Ad esempio: "martedì 14 marzo 1995 12.41.29". |
%#x |
Rappresentazione di data estesa, appropriata per le impostazioni locali. Ad esempio: "martedì 14 marzo 1995". |
%#d , , , , %#M %#W %#r %#R %#S %#m %#U %#y %#T %#I %#j %#V %#H %#F %#D %#e %#Y |
Rimuovere gli zeri iniziali o gli spazi (se presenti). |
L'anno basato su settimana e settimana ISO 8601 prodotto da %V
, %g
e %G
usa una settimana che inizia il lunedì. La settimana 1 è la settimana che contiene il quarto giorno di gennaio, ovvero la prima settimana che include almeno quattro giorni dell'anno. Se il primo lunedì dell'anno è il 2°, il terzo o il 4° giorno, i giorni precedenti fanno parte dell'ultima settimana dell'anno precedente. Per questi giorni, %V
viene sostituito da 53 ed entrambi e %g
%G
vengono sostituiti dalle cifre dell'anno precedente.
Nota
Quando si usa una delle strftime
funzioni con un tm
puntatore restituito da gmtime
, i valori stampati tramite gli %Z
identificatori e %z
non saranno accurati. Ciò è dovuto al fatto che lo tm
struct specificato dallo standard C non contiene le informazioni relative al nome del fuso orario né all'offset. Al contrario, le informazioni sul fuso orario vengono popolate tramite le variabili globali e _dstbias
._timezone
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
strftime |
<time.h> |
wcsftime |
<time.h> oppure <wchar.h> |
_strftime_l |
<time.h> |
_wcsftime_l |
<time.h> oppure <wchar.h> |
Le _strftime_l
funzioni e _wcsftime_l
sono specifiche di Microsoft. Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
Vedere l'esempio per time
.
Vedi anche
impostazioni locali
Gestione orari
Manipolazione delle stringhe
localeconv
setlocale
, _wsetlocale
Funzioni strcoll
strxfrm
, wcsxfrm
, _strxfrm_l
_wcsxfrm_l