strftime
|
Definido en el encabezado
<time.h>
|
||
| (hasta C99) | ||
| (desde C99) | ||
Convierte la información de fecha y hora de un tiempo de calendario dado tp a una cadena de caracteres multibyte terminada en nulo str de acuerdo con la cadena de formato format . Se escriben hasta count bytes.
Contenidos |
Parámetros
| str | - | puntero al primer elemento del char array para salida |
| count | - | número máximo de bytes a escribir |
| format | - | puntero a una cadena de caracteres multibyte terminada en nulo que especifica el formato de conversión |
| tp | - | puntero a un struct tm objeto que especifica el tiempo a formatear |
Cadena de formato
La cadena de formato consiste en cero o más especificadores de conversión y caracteres ordinarios (excepto
%
). Todos los caracteres ordinarios, incluido el carácter nulo terminador, se copian a la cadena de salida sin modificación. Cada especificación de conversión comienza con el carácter
%
, opcionalmente seguido por el modificador
E
o
O
(ignorado si no es compatible con la configuración regional), seguido del carácter que determina el comportamiento del especificador. Los siguientes especificadores de formato están disponibles:
|
Especificador
de conversión |
Explicación | Campos utilizados |
|---|---|---|
%
|
escribe literalmente
%
. La especificación de conversión completa debe ser
%%
.
|
|
n
(C99) |
escribe el carácter de nueva línea | |
t
(C99) |
escribe el carácter de tabulación horizontal | |
| Año | ||
Y
|
escribe el año como un número decimal, ej. 2017 |
tm_year
|
EY
(C99) |
escribe el año en representación alternativa, ej. 平成23年 (año Heisei 23) en lugar de 2011年 (año 2011) en la configuración regional ja_JP |
tm_year
|
y
|
escribe los últimos 2 dígitos del
año
como número decimal (rango
[00,99]
)
|
tm_year
|
Oy
(C99) |
escribe los últimos 2 dígitos del año usando el sistema numérico alternativo, por ejemplo 十一 en lugar de 11 en la configuración regional ja_JP |
tm_year
|
Ey
(C99) |
escribe el
año
como desplazamiento desde el período del calendario alternativo de la localización
%EC
(dependiente de la localización)
|
tm_year
|
C
(C99) |
escribe los primeros 2 dígitos del
año
como un número decimal (rango
[00,99]
)
|
tm_year
|
EC
(C99) |
escribe el nombre del año base (período) en la representación alternativa de la configuración regional, por ejemplo 平成 (era Heisei) en ja_JP |
tm_year
|
G
(C99) |
escribe el
año basado en semanas ISO 8601
, es decir, el año que contiene la semana especificada.
En ISO 8601 las semanas comienzan el lunes y la primera semana del año debe cumplir los siguientes requisitos:
|
tm_year
,
tm_wday
,
tm_yday
|
g
(C99) |
escribe los últimos 2 dígitos del
año basado en semanas ISO 8601
, es decir, el año que contiene la semana especificada (rango
[00,99]
).
En ISO 8601 las semanas comienzan el lunes y la primera semana del año debe cumplir los siguientes requisitos:
|
tm_year
,
tm_wday
,
tm_yday
|
| Mes | ||
b
|
escribe el
nombre del mes abreviado
, ej.
Oct
(dependiente de la configuración regional)
|
tm_mon
|
Ob
(C23) |
escribe el nombre del mes abreviado en la representación alternativa de la configuración regional |
tm_mon
|
h
(C99) |
sinónimo de
b
|
tm_mon
|
B
|
escribe el
nombre completo del mes
, ej.
October
(dependiente de la configuración regional)
|
tm_mon
|
OB
(C23) |
escribe el nombre completo del mes apropiado en la representación alternativa de la configuración regional |
tm_mon
|
m
|
escribe el
mes
como un número decimal (rango
[01,12]
)
|
tm_mon
|
Om
(C99) |
escribe el mes usando el sistema numérico alternativo, por ejemplo 十二 en lugar de 12 en la configuración regional ja_JP |
tm_mon
|
| Semana | ||
U
|
escribe la
semana del año
como número decimal (el domingo es el primer día de la semana) (rango
[00,53]
)
|
tm_year
,
tm_wday
,
tm_yday
|
OU
(C99) |
escribe la
semana del año
, como con
%U
, usando el sistema numérico alternativo, ej. 五十二 en lugar de 52 en la configuración regional ja_JP
|
tm_year
,
tm_wday
,
tm_yday
|
W
|
escribe la
semana del año
como número decimal (el lunes es el primer día de la semana) (rango
[00,53]
)
|
tm_year
,
tm_wday
,
tm_yday
|
OW
(C99) |
escribe la
semana del año
, como con
%W
, usando el sistema numérico alternativo, ej. 五十二 en lugar de 52 en la configuración regional ja_JP
|
tm_year
,
tm_wday
,
tm_yday
|
V
(C99) |
escribe la
semana ISO 8601 del año
(rango
[01,53]
).
En ISO 8601 las semanas comienzan el lunes y la primera semana del año debe cumplir los siguientes requisitos:
|
tm_year
,
tm_wday
,
tm_yday
|
OV
(C99) |
escribe la
semana del año
, como con
%V
, usando el sistema numérico alternativo, ej. 五十二 en lugar de 52 en la configuración regional ja_JP
|
tm_year
,
tm_wday
,
tm_yday
|
| Día del año/mes | ||
j
|
escribe el
día del año
como un número decimal (rango
[001,366]
)
|
tm_yday
|
d
|
escribe el
día del mes
como un número decimal (rango
[01,31]
)
|
tm_mday
|
Od
(C99) |
escribe el
día del mes
basado en cero usando el sistema numérico alternativo, por ejemplo, 二十七 en lugar de 27 en la configuración regional ja_JP
Un solo carácter va precedido por un espacio. |
tm_mday
|
e
(C99) |
escribe el
día del mes
como un número decimal (rango
[1,31]
).
Los dígitos individuales van precedidos por un espacio. |
tm_mday
|
Oe
(C99) |
escribe el
día del mes
basado en uno utilizando el sistema numérico alternativo, por ejemplo, 二十七 en lugar de 27 en la configuración regional ja_JP
Un solo carácter va precedido por un espacio. |
tm_mday
|
| Día de la semana | ||
a
|
escribe el
nombre abreviado del día de la semana
, ej.
Fri
(dependiente de la configuración regional)
|
tm_wday
|
A
|
escribe el
nombre completo del día de la semana
, ej.
Friday
(dependiente de la configuración regional)
|
tm_wday
|
w
|
escribe el
día de la semana
como un número decimal, donde el domingo es
0
(rango
[0-6]
)
|
tm_wday
|
Ow
(C99) |
escribe el
día de la semana
, donde el domingo es
0
, usando el sistema numérico alternativo, por ejemplo 二 en lugar de 2 en la configuración regional ja_JP
|
tm_wday
|
u
(C99) |
escribe el
día de la semana
como un número decimal, donde el lunes es
1
(formato ISO 8601) (rango
[1-7]
)
|
tm_wday
|
Ou
(C99) |
escribe el
día de la semana
, donde el lunes es
1
, usando el sistema numérico alternativo, por ejemplo 二 en lugar de 2 en la configuración regional ja_JP
|
tm_wday
|
| Hora, minuto, segundo | ||
H
|
escribe la
hora
como número decimal, reloj de 24 horas (rango
[00-23]
)
|
tm_hour
|
OH
(C99) |
escribe la hora del reloj de 24 horas utilizando el sistema numérico alternativo, por ejemplo 十八 en lugar de 18 en la configuración regional ja_JP |
tm_hour
|
I
|
escribe
hour
como un número decimal, reloj de 12 horas (rango
[01,12]
)
|
tm_hour
|
OI
(C99) |
escribe la hora del reloj de 12 horas usando el sistema numérico alternativo, por ejemplo 六 en lugar de 06 en la configuración regional ja_JP |
tm_hour
|
M
|
escribe el
minuto
como un número decimal (rango
[00,59]
)
|
tm_min
|
OM
(C99) |
escribe el minuto utilizando el sistema numérico alternativo, por ejemplo 二十五 en lugar de 25 en la configuración regional ja_JP |
tm_min
|
S
|
escribe el
segundo
como un número decimal (rango
[00,60]
)
|
tm_sec
|
OS
(C99) |
escribe el segundo usando el sistema numérico alternativo, por ejemplo 二十四 en lugar de 24 en la configuración regional ja_JP |
tm_sec
|
| Otros | ||
c
|
escribe
cadena de fecha y hora estándar
, ej.
Sun Oct 17 04:41:13 2010
(dependiente de la configuración regional)
|
todos |
Ec
(C99) |
escribe la cadena de fecha y hora alternativa , por ejemplo usando 平成23年 (año Heisei 23) en lugar de 2011年 (año 2011) en la configuración regional ja_JP | todos |
x
|
escribe representación de fecha localizada (dependiente de la configuración regional) | todos |
Ex
(C99) |
escribe representación de fecha alternativa , por ejemplo usando 平成23年 (año Heisei 23) en lugar de 2011年 (año 2011) en la configuración regional ja_JP | todos |
X
|
escribe la representación localizada de la hora , por ejemplo 18:40:20 o 6:40:20 PM (dependiente de la configuración regional) | todos |
EX
(C99) |
escribe representación alternativa de tiempo (dependiente de la configuración regional) | todos |
D
(C99) |
equivalente a "%m/%d/%y" |
tm_mon
,
tm_mday
,
tm_year
|
F
(C99) |
equivalente a "%Y-%m-%d" (el formato de fecha ISO 8601) |
tm_mon
,
tm_mday
,
tm_year
|
r
(C99) |
escribe la hora en formato 12 horas localizado (dependiente de la configuración regional) |
tm_hour
,
tm_min
,
tm_sec
|
R
(C99) |
equivalente a "%H:%M" |
tm_hour
,
tm_min
|
T
(C99) |
equivalente a "%H:%M:%S" (el formato de hora ISO 8601) |
tm_hour
,
tm_min
,
tm_sec
|
p
|
escribe a.m. o p.m. localizado (dependiente de la configuración regional) |
tm_hour
|
z
(C99) |
escribe el
desplazamiento del UTC
en formato ISO 8601 (por ejemplo,
-0430
), o ningún carácter si la información de la zona horaria no está disponible
|
tm_isdst
|
Z
|
escribe el nombre o abreviatura de la zona horaria dependiente de la configuración regional , o ningún carácter si la información de la zona horaria no está disponible |
tm_isdst
|
Valor de retorno
El número de bytes escritos en el array de caracteres apuntado por str sin incluir el carácter terminador ' \0 ' en caso de éxito. Si se alcanzó count antes de que toda la cadena pudiera almacenarse, 0 es retornado y el contenido es indeterminado.
Ejemplo
#include <locale.h> #include <stdio.h> #include <time.h> int main(void) { char buff[70]; struct tm my_time = { .tm_year = 112, // = año 2012 .tm_mon = 9, // = 10º mes .tm_mday = 9, // = 9º día .tm_hour = 8, // = 8 horas .tm_min = 10, // = 10 minutos .tm_sec = 20 // = 20 segundos }; if (strftime(buff, sizeof buff, "%A %c", &my_time)) puts(buff); else puts("strftime failed"); setlocale(LC_TIME, "el_GR.utf8"); if (strftime(buff, sizeof buff, "%A %c", &my_time)) puts(buff); else puts("strftime failed"); }
Salida posible:
Sunday Sun Oct 9 08:10:20 2012 Κυριακή Κυρ 09 Οκτ 2012 08:10:20 πμ EST
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.27.3.5 La función strftime (p: TBD)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.27.3.5 La función strftime (p: 288-291)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.27.3.5 La función strftime (p: 394-397)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.23.3.5 La función strftime (p: 343-347)
- Estándar C89/C90 (ISO/IEC 9899:1990):
-
- 4.12.3.5 La función strftime
Véase también
|
(obsoleto en C23)
(C11)
|
convierte un objeto
tm
a una representación textual
(función) |
|
(obsoleto en C23)
(C11)
|
convierte un objeto
time_t
a una representación textual
(función) |
|
(C95)
|
convierte un objeto
tm
a una representación textual personalizada de cadena ancha
(función) |
|
Documentación de C++
para
strftime
|
|