Generador de formatos strftime
Crea una cadena de formato strftime para datetime de Python o time.h de C haciendo clic en tokens en lugar de memorizarlos. La vista previa se actualiza mientras escribes, cada parte del formato se explica y la herramienta avisa cuando una directiva o un indicador no funcionará en Windows, macOS o glibc.
Última actualización:
Cómo usar Generador de formatos strftime
- Elige tu lenguaje y plataforma: Python en Linux/macOS, Python en Windows o C con glibc.
- Haz clic en los tokens de la paleta para insertarlos en el cursor, y añade separadores con los botones pequeños o escribiéndolos.
- Revisa la salida en la parte superior. Cambia la fecha de la vista previa o alterna entre hora local y UTC para probar casos límite.
- Lee los avisos: señalan los códigos que fallan o se comportan de otra forma en la plataforma seleccionada.
- Copia el formato o el código generado en tu proyecto.
Referencia de strftime
Los ejemplos usan el sábado 7 de marzo de 2026 a las 14:05:09.123456 en UTC (configuración regional C, nombres en inglés). La última columna indica dónde funciona cada directiva.
| Código | Significado | Ejemplo | Funciona en |
|---|---|---|---|
%Y | Año con siglo | 2026 | Todos |
%y | Año sin siglo | 26 | Todos |
%m | Número de mes, relleno con ceros | 03 | Todos |
%B / %b | Nombre completo / abreviado del mes | March / Mar | Todos |
%d | Día del mes, relleno con ceros | 07 | Todos |
%e | Día del mes, relleno con espacio | 7 | Todos (Windows mediante el runtime de C moderno) |
%j | Día del año | 066 | Todos |
%A / %a | Día de la semana completo / abreviado | Saturday / Sat | Todos |
%w / %u | Número del día de la semana, domingo = 0 / ISO, lunes = 1 | 6 / 6 | Todos |
%U / %W | Semana del año, empieza en domingo / lunes | 09 / 09 | Todos |
%G-W%V | Año ISO basado en semanas y semana | 2026-W10 | Todos |
%H / %I | Hora, reloj de 24 / 12 horas | 14 / 02 | Todos |
%p | AM o PM | PM | Todos |
%M / %S | Minuto / segundo | 05 / 09 | Todos |
%f | Microsegundos | 123456 | Solo Python |
%z | Desfase UTC | +0000 | Todos (Python: solo datetimes con zona horaria) |
%:z | Desfase UTC con dos puntos | +00:00 | Python 3.12+ |
%Z | Nombre de la zona horaria | UTC | Todos (Python: solo datetimes con zona horaria) |
%F / %T | Atajos de %Y-%m-%d / %H:%M:%S | 2026-03-07 / 14:05:09 | Todos |
%k / %l / %P | Hora de 24 h / 12 h rellena con espacio, am/pm en minúsculas | 14 / 2 / pm | glibc y Python en Linux (%P no en macOS) |
%s | Segundos desde 1970-01-01 UTC | 1772892309 | glibc, macOS; no Windows |
%% | Un signo de porcentaje literal | % | Todos |
Indicadores de relleno y portabilidad
Un indicador entre el % y la letra cambia el relleno. Son extensiones del estándar de C, así que la compatibilidad depende de la plataforma:
%-d: sin relleno (7). glibc, macOS y Python en esos sistemas.%_d: relleno con espacios ( 7). glibc.%^a: mayúsculas (SAT). Solo glibc.%#d: sin relleno en Windows. En glibc, el indicador # invierte las mayúsculas y minúsculas.
Si un mismo script debe funcionar en Linux, macOS y Windows, evita los indicadores y crea el número sin relleno en el código, o usa una biblioteca como Babel o Arrow. En Python, las f-strings aceptan los mismos códigos, así que f"{dt:%Y-%m-%d}" equivale a dt.strftime("%Y-%m-%d").
Cómo elegir un formato
- Datos legibles por máquinas: ISO 8601 (
%Y-%m-%dT%H:%M:%S%z) se ordena correctamente como texto y casi cualquier analizador lo entiende. - Nombres de archivo:
%Y%m%d_%H%M%Sno tiene dos puntos ni barras, que no se permiten en los nombres de archivo de Windows. - Cabeceras HTTP y cookies: formatea siempre en UTC y escribe GMT literalmente, como en
%a, %d %b %Y %H:%M:%S GMT. - Personas: escribe el mes con letras (
%B %d, %Y) para evitar la ambigüedad 03/07 frente a 07/03 entre lectores de EE. UU. y de Europa.
¿Necesitas convertir una fecha entre formatos o traducir un patrón a la sintaxis de moment.js o Java? Usa el Convertidor de formatos de fecha. Para valores epoch, consulta el Convertidor de timestamp Unix.
Preguntas frecuentes
¿Qué es strftime?
strftime (string format time) es la función de la biblioteca estándar de C que convierte una fecha y hora en texto según una cadena de formato. datetime.strftime() y time.strftime() de Python, strftime() de PHP, Time#strftime de Ruby y muchas herramientas de logs usan las mismas directivas %, como %Y para el año de cuatro dígitos y %H para la hora.
¿Cómo quito el cero inicial del día o la hora en Python?
En Linux y macOS usa un guion después del signo de porcentaje: %-d da 7 en lugar de 07 y %-I da 3 en lugar de 03. En Windows eso lanza ValueError; usa %#d y %#I en su lugar. Para código que deba funcionar en todas partes, formatea el número tú mismo, por ejemplo f"{dt.day}" o str(dt.hour).
¿Qué diferencia hay entre %U, %W y %V?
%U cuenta las semanas empezando en domingo y %W empezando en lunes; los días anteriores al primer domingo o lunes del año están en la semana 00. %V es el número de semana ISO 8601 (01-53), donde la semana 1 es la que contiene el primer jueves del año. Combina %V con %G, el año ISO basado en semanas, no con %Y.
¿Por qué %z y %Z están vacíos en mi salida de Python?
El datetime es naive, es decir, no tiene tzinfo. Python solo rellena %z y %Z en datetimes con zona horaria. Crea uno con datetime.now(timezone.utc) o datetime.now().astimezone(), o asigna una zona con zoneinfo.ZoneInfo.
¿Admite microsegundos strftime de C?
No. %f es un añadido de Python; struct tm de C no tiene ningún campo menor que un segundo. En C, obtén precisión de fracciones de segundo con clock_gettime() y añade la fracción tú mismo.
¿Por qué %c se ve distinto en Windows?
%c, %x y %X usan la configuración regional actual. Con la configuración regional C predeterminada, glibc imprime %c como 'Sat Mar 7 14:05:09 2026', mientras que el runtime de Windows imprime '03/07/26 14:05:09'. Usa un formato explícito como %Y-%m-%d %H:%M:%S cuando importe la salida exacta.
¿Puedo usar el mismo formato para analizar una fecha con strptime?
Normalmente sí: datetime.strptime(text, format) acepta los mismos códigos para las directivas comunes. No acepta los indicadores de relleno (%-d) ni atajos como %F, %T y %e, así que la herramienta te dice qué partes debes reescribir antes de analizar.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.