Jetons de format de date
Il y a deux familles largement utilisées de chaînes de format de date et elles se chevauchent juste assez pour être dangereuses. strftime — de C, et hérité de Python, Ruby, PHP et GNU date — utilise des jetons de pourcentage comme %Y. Unicode LDML, utilisé par ICU, Java, moment et dayjs, utilise des lettres répétées comme yyyy. Dans LDML, MM est un mois et mm est une minute ; obtenir cette paire à l'envers est le bug classique.
Chaque ligne ci-dessous est rendue pour le même instant : lundi 9 mars 2026, 14:05:07 UTC. Cette date est choisie pour que rien ne se cache — un jour et un mois à un seul chiffre exposent le remplissage avec zéro, l'heure de l'après-midi rend les horloges 12 et 24 heures visuellement différentes, et le jour de la semaine est sans ambiguïté.
Une colonne d'équivalent vide signifie que l'autre dialecte n'a pas de jeton unique pour elle et vous devez composer la valeur vous-même. La suite de tests rend les champs de calendrier avec les fonctions de date propres à la plateforme et les compare à cette table, donc les exemples ne peuvent pas s'écarter de la réalité.
Année
4| strftime | LDML | Champ | Rend comme |
|---|---|---|---|
| %Y | yyyy | Année à quatre chiffres | 2026 |
| %y | yy | Année à deux chiffresAmbigu par la construction. Évitez-le dans tout ce qui est stocké. | 26 |
| %C | Siècle — l'année divisée par 100 | 20 | |
| %G | YYYY | Année de numérotation de semaine ISODiffère de l'année calendaire autour du Nouvel An. À utiliser avec le numéro de semaine ISO uniquement. | 2026 |
Mois
4En LDML, MM est le mois et mm est la minute.
| strftime | LDML | Champ | Rend comme |
|---|---|---|---|
| %m | MM | Mois, rembourré de zéro | 03 |
| %-m | M | Mois, pas de rembourrage | 3 |
| %b | MMM | Nom du mois abrégé | Mar |
| %B | MMMM | Nom complet du mois | March |
Jour et jour de la semaine
8En LDML, dd est le jour du mois et DDD est le jour de l'année.
| strftime | LDML | Champ | Rend comme |
|---|---|---|---|
| %d | dd | Jour du mois, rembourré de zéro | 09 |
| %-d | d | Jour du mois, pas de rembourrage | 9 |
| %e | Jour du mois, rembourré d'espace | 9 | |
| %j | DDD | Jour de l'année, 001–366 | 068 |
| %a | EEE | Nom du jour de la semaine abrégé | Mon |
| %A | EEEE | Nom complet du jour de la semaine | Monday |
| %u | Jour de la semaine en nombre, lundi est 1%w numérote les mêmes jours à partir de dimanche comme 0. | 1 | |
| %V | ww | Numéro de semaine ISO, semaines commençant lundi | 11 |
Temps
8| strftime | LDML | Champ | Rend comme |
|---|---|---|---|
| %H | HH | Heure sur l'horloge 24 heures | 14 |
| %-H | H | Heure, pas de rembourrage | 14 |
| %I | hh | Heure sur l'horloge 12 heures | 02 |
| %M | mm | Minute | 05 |
| %S | ss | Deuxième | 07 |
| %3N | SSS | Millisecondes | 000 |
| %p | a | AM ou PM | PM |
| %s | Horodatage Unix — secondes depuis 1970-01-01 UTC | 1773065107 |
Fuseau horaire
3Un décalage est un nombre ; un nom de zone est une règle. Seul le nom survit à un changement d'heure d'été.
| strftime | LDML | Champ | Rend comme |
|---|---|---|---|
| %z | ZZ | Décalage UTC, pas de deux-points | +0000 |
| %:z | XXX | Décalage UTC avec un deux-points, comme ISO 8601 le veut | +00:00 |
| %Z | zzz | Abréviation de fuseau horaireLes abréviations ne sont pas uniques — CST est au moins trois zones différentes. | UTC |
Combinaisons courantes
7Construit à partir des jetons ci-dessus — aucune bibliothèque nécessaire.
| strftime | LDML | Champ | Rend comme |
|---|---|---|---|
| %F | yyyy-MM-dd | Date ISO | 2026-03-09 |
| %T | HH:mm:ss | Heure 24 heures | 14:05:07 |
| %FT%T%:z | yyyy-MM-dd'T'HH:mm:ssXXX | Horodatage ISO 8601 completLe format à stocker. Se trie en tant que texte, sans ambiguïté quant au décalage. | 2026-03-09T14:05:07+00:00 |
| %a, %d %b %Y %T %z | EEE, dd MMM yyyy HH:mm:ss ZZ | RFC 2822 — en-têtes de courrier et HTTP plus anciens | Mon, 09 Mar 2026 14:05:07 +0000 |
| %m/%d/%Y | MM/dd/yyyy | Convention États-Unis, mois d'abord | 03/09/2026 |
| %d.%m.%Y | dd.MM.yyyy | Convention européenne, jour d'abord | 09.03.2026 |
| %% | '' | Un signe pour cent littéral | % |