Condividi tramite


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, formato 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, %ge %Gusa 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