strftime ()- Convertir la date / l'heure en chaîne
Format
#include <time.h>
size_t strftime(char *s, size_t maxsize, const char *format,
const struct tm *timeptr);Niveau de langue
American National Standards Institute
Unités d'exécution protégées
Oui
Sensible à l'environnement local
Le comportement de cette fonction peut être affecté par les catégories LC_CTYPE, LC_TIME et LC_TOD de l'environnement local en cours. Pour plus d'informations, voir Présentation des CCSID et des environnements locaux.
Description
La fonction strftime() place les octets dans le tableau désigné par s comme contrôlé par la chaîne indiquée par format. La chaîne de format se compose de zéro ou plusieurs spécifications de conversion et de caractères ordinaires. Une spécification de conversion se compose d'un caractère% et d'un caractère de fin de conversion qui détermine le comportement de la conversion. Tous les caractères ordinaires (y compris les caractères nuls de fin et les caractères multi-octets) sont copiés tels quels dans le tableau. Si la copie a lieu entre des objets qui se chevauchent, le comportement n'est pas défini. Un maximum de maxsize octets est placé dans le tableau. Les caractères appropriés sont déterminés par les valeurs contenues dans la structure pointée par timeptret par les valeurs stockées dans l'environnement local en cours.
Chaque spécification de conversion standard est remplacée par des caractères appropriés, comme décrit dans le tableau suivant:
| Spécificateur | Signification |
|---|---|
| %a | Nom abrégé du jour de la semaine. |
| %A | Nom complet du jour de la semaine. |
| %b | Nom abrégé du mois. |
| %B | Nom complet du mois. |
| %c | Date / heure dans le format de l'environnement local. |
| %C | Nombre de siècle [ 00-99 ], l'année divisée par 100 et tronquée à un entier. |
| %d | Jour du mois [ 01-31 ]. |
| %D | Format de date, identique à %m/%d/ %y. |
| %e | Identique à %d, sauf qu'un seul chiffre est précédé d'un espace [ 1-31 ]. |
| %g | Partie à 2 chiffres de la date de la semaine ISO [ 00,99 ]. |
| %F | Format de date ISO, identique à %Y-%m-%d. |
| %G | Partie année à 4 chiffres de la date de la semaine ISO. Peut être négatif. |
| %h | Identique à %b. |
| %H | Heure au format 24 heures [ 00-23 ]. |
| %I | Heure au format 12 heures [ 01-12 ]. |
| %j | Jour de l'année [ 001-366 ]. |
| %m | Mois [ 01-12 ]. |
| %M | Minute [ 00-59 ]. |
| %n | Caractère de retour à la ligne. |
| %p | Chaîne AM ou PM. |
| %r | Heure au format AM/PM de l'environnement local. S'il n'est pas disponible dans le format d'heure de l'environnement local, la valeur par défaut est le format POSIX heure AM/PM: %I: %M: %S %p. |
| %R | Format d'heure sur 24 heures sans secondes, identique à %H: %M. |
| %S | Seconde [ 00-61 ]. La plage des secondes permet une seconde bissextile et une seconde bissextile double. |
| %t | Caractère de tabulation. |
| %t | Format d'heure sur 24 heures avec secondes, identique à %H: %M: %S. |
| %u | Jour de la semaine [ 1, 7 ]. Lundi est 1 et dimanche est 7. |
| %U | Numéro de semaine de l'année [ 00-53 ]. Le dimanche est le premier jour de la semaine. |
| %V | Numéro de semaine ISO de l'année [ 01-53 ]. Le lundi est le premier jour de la semaine. Si la semaine contenant le 1er janvier compte quatre jours ou plus dans la nouvelle année, elle est considérée comme la semaine 1. Sinon, il s'agit de la dernière semaine de l'année précédente et l'année suivante correspond à la semaine 1 de la nouvelle année. |
| %w | Jour de la semaine [ 0, 6 ], le dimanche est 0. |
| %W | Numéro de semaine de l'année [ 00-53 ]. Le lundi est le premier jour de la semaine. |
| %x | Date au format de l'environnement local. |
| %X | Heure au format de l'environnement local. |
| %y | Année à 2 chiffres [ 00,99 ]. |
| %Y | Année à 4 chiffres. Peut être négatif. |
| %z | Décalage UTC. La sortie est une chaîne au format +HHMM ou -HHMM, où + indique l'est du temps moyen de Greenwich,-indique l'ouest du temps moyen de Greenwich, HH indique le nombre d'heures par rapport au temps moyen de Greenwich et MM indique le nombre de minutes par rapport au temps moyen de Greenwich. |
| %Z | Nom du fuseau horaire. |
| %% | Caractère%. |
Spécificateurs de conversion modifiés
Certains spécificateurs de conversion peuvent être modifiés par les caractères de modification E ou O pour indiquer qu'un format ou une spécification de remplacement doit être utilisé plutôt que celui normalement utilisé par le spécificateur de conversion non modifié. Si un spécificateur de conversion modifié utilise une zone de l'environnement local en cours qui n'est pas disponible, le comportement sera comme si la spécification de conversion non modifiée était utilisée. Par exemple, si la chaîne era est la chaîne vide "", ce qui signifie que la chaîne n'est pas disponible, alors %EY se comporte comme %Y.
| Spécificateur | Signification |
|---|---|
| %Ec | Date / heure de l'ère en cours. |
| %EC | Nom de l'ère. |
| %Ex | Date de l'ère en cours. |
| %EX | L'heure de l'ère actuelle. |
| %Ey | Année de l'ère. Il s'agit du décalage par rapport à l'année de référence. |
| %EY | Année de l'ère actuelle. |
| %Od | Jour du mois à l'aide de chiffres de remplacement. |
| %Oe | Identique à %Od. |
| %OH | Heure au format 24 heures à l'aide de chiffres de remplacement. |
| %OI | Heure au format 12 heures à l'aide de chiffres de remplacement. |
| %Om | Mois à l'aide de chiffres de remplacement. |
| %OM | Minutes à l'aide de chiffres de remplacement. |
| %OS | Secondes à l'aide de chiffres de remplacement. |
| %Ou | Jour de la semaine utilisant des chiffres de remplacement. Lundi est 1 et dimanche est 7. |
| %Unité organisationnelle | Numéro de semaine de l'année à l'aide de chiffres de remplacement. Le dimanche est le premier jour de la semaine. |
| %OV | Numéro de semaine ISO de l'année à l'aide de chiffres de remplacement. Voir %V pour l'explication du numéro de semaine ISO. |
| %Ow | Jour de la semaine utilisant des chiffres de remplacement. Dimanche est 0. |
| %OW | Numéro de semaine de l'année à l'aide de chiffres de remplacement. Le lundi est le premier jour de la semaine. |
| %Oy | Année à 2 chiffres utilisant des chiffres de remplacement. |
| %ZO | Si le nom de fuseau horaire existe dans l'environnement local en cours, il est identique à %Z; dans le cas contraire, le nom de fuseau horaire abrégé du travail en cours est renvoyé. |
Valeur renvoyée
Si le nombre total d'octets résultants, y compris l'octet null de fin, n'est pas supérieur à maxsize, strftime() renvoie le nombre d'octets placés dans le tableau désigné par s, à l'exclusion de l'octet null de fin. Sinon, 0 est renvoyé et le contenu du tableau est indéterminé.
Si une erreur de conversion se produit, errno peut être défini sur ECONVERT.
Exemple
#include <stdio.h>
#include <time.h>
int main(void)
{
char s[100];
int rc;
time_t temp;
struct tm *timeptr;
temp = time(NULL);
timeptr = localtime(&temp);
rc = strftime(s,sizeof(s),"Today is %A, %b %d.\nTime: %r", timeptr);
printf("%d characters written.\n%s\n",rc,s);
return 0;
}
/*************************************************
The output should be similar to:
46 characters written
Today is Wednesday, Oct 24.
Time: 01:01:15 PM
************************************************************/
Rubriques connexes
- asctime ()-Convertir le temps en chaîne de caractères
- asctime_r ()-Convertir le temps en chaîne de caractères (Restartable)
- ctime ()-Convertir le temps en chaîne de caractères
- ctime64()-Convertir le temps en chaîne de caractères
- ctime64_r()-Convertir le temps en chaîne de caractères (redémarrable)
- ctime_r ()-Convertir le temps en chaîne de caractères (Restartable)
- gmtime ()-Convertir le temps
- gmtime64()-Temps de conversion
- gmtime64_r()-Temps de conversion (redémarrable)
- gmtime_r ()-Temps de conversion (redémarrable)
- localtime ()-Heure de conversion
- localtime64()-Heure de conversion
- localtime64_r()-Temps de conversion (redémarrable)
- localtime_r ()-Temps de conversion (retartable)
- setlocale ()-Définition des paramètres régionaux
- strptime ()-Convertir une chaîne en date / heure
- time ()-Déterminer l'heure en cours
- time64()-Détermination de l'heure en cours
- <time.h>