Tokens de formato de fecha
Hay dos familias ampliamente utilizadas de cadenas de formato de fecha y se superponen lo suficiente para ser peligrosas. strftime—de C, e heredado por Python, Ruby, PHP y GNU date—usa tokens de porcentaje como %Y. Unicode LDML, usado por ICU, Java, moment y dayjs, usa letras repetidas como yyyy. En LDML, MM es un mes y mm es un minuto; obtener ese par al revés es el error clásico.
Cada fila a continuación se renderiza para el mismo instante: lunes 9 de marzo de 2026, 14:05:07 UTC. Esa fecha se elige para que nada se oculte—un día y mes de un solo dígito exponen el relleno con ceros, la hora de la tarde hace que los relojes de 12 y 24 horas difieran visiblemente, y el día de la semana es inequívoco.
Una columna de equivalente vacía significa que el otro dialecto no tiene un token único para él y tienes que componer el valor tú mismo. El conjunto de pruebas renderiza los campos del calendario con las propias funciones de fecha de la plataforma y los compara con esta tabla, para que los ejemplos no puedan alejarse de la realidad.
Año
4| strftime | LDML | Campo | Se renderiza como |
|---|---|---|---|
| %Y | yyyy | Año de cuatro dígitos | 2026 |
| %y | yy | Año de dos dígitosAmbiguo por construcción. Evítalo en cualquier cosa almacenada. | 26 |
| %C | Siglo—el año dividido por 100 | 20 | |
| %G | YYYY | Año de numeración de semana ISODifiere del año calendario alrededor de Año Nuevo. Usa solo con el número de semana ISO. | 2026 |
Mes
4En LDML, MM es el mes e mm es el minuto.
| strftime | LDML | Campo | Se renderiza como |
|---|---|---|---|
| %m | MM | Mes, rellenado con ceros | 03 |
| %-m | M | Mes, sin relleno | 3 |
| %b | MMM | Nombre de mes abreviado | Mar |
| %B | MMMM | Nombre de mes completo | March |
Día e día de la semana
8En LDML, dd es día del mes e DDD es día del año.
| strftime | LDML | Campo | Se renderiza como |
|---|---|---|---|
| %d | dd | Día del mes, rellenado con ceros | 09 |
| %-d | d | Día del mes, sin relleno | 9 |
| %e | Día del mes, relleno de espacio | 9 | |
| %j | DDD | Día del año, 001–366 | 068 |
| %a | EEE | Nombre de día de la semana abreviado | Mon |
| %A | EEEE | Nombre completo del día de la semana | Monday |
| %u | Día de la semana como número, lunes es 1%w numera los mismos días de domingo como 0. | 1 | |
| %V | ww | Número de semana ISO, semanas que comienzan el lunes | 11 |
Hora
8| strftime | LDML | Campo | Se renderiza como |
|---|---|---|---|
| %H | HH | Hora en el reloj de 24 horas | 14 |
| %-H | H | Hora, sin relleno | 14 |
| %I | hh | Hora en el reloj de 12 horas | 02 |
| %M | mm | Minuto | 05 |
| %S | ss | Segundo | 07 |
| %3N | SSS | Milisegundos | 000 |
| %p | a | AM o PM | PM |
| %s | Marca de tiempo Unix—segundos desde 1970-01-01 UTC | 1773065107 |
Zona horaria
3Un desplazamiento es un número; un nombre de zona es una regla. Solo el nombre sobrevive a un cambio DST.
| strftime | LDML | Campo | Se renderiza como |
|---|---|---|---|
| %z | ZZ | Desplazamiento UTC, sin dos puntos | +0000 |
| %:z | XXX | Desplazamiento UTC con dos puntos, como ISO 8601 lo desea | +00:00 |
| %Z | zzz | Abreviatura de zona horariaLas abreviaturas no son únicas—CST es al menos tres zonas diferentes. | UTC |
Combinaciones comunes
7Construidas a partir de los tokens anteriores—sin biblioteca necesaria.
| strftime | LDML | Campo | Se renderiza como |
|---|---|---|---|
| %F | yyyy-MM-dd | Fecha ISO | 2026-03-09 |
| %T | HH:mm:ss | Hora de 24 horas | 14:05:07 |
| %FT%T%:z | yyyy-MM-dd'T'HH:mm:ssXXX | Marca de tiempo ISO 8601 completaEl formato para almacenar. Se ordena como texto, inequívoco sobre el desplazamiento. | 2026-03-09T14:05:07+00:00 |
| %a, %d %b %Y %T %z | EEE, dd MMM yyyy HH:mm:ss ZZ | RFC 2822—encabezados de correo electrónico e HTTP más antiguo | Mon, 09 Mar 2026 14:05:07 +0000 |
| %m/%d/%Y | MM/dd/yyyy | Convención estadounidense, mes primero | 03/09/2026 |
| %d.%m.%Y | dd.MM.yyyy | Convención europea, día primero | 09.03.2026 |
| %% | '' | Un signo de porcentaje literal | % |