Namespaces
Variants

wcsftime

From cppreference.net
Definido en el encabezado <wchar.h>
size_t wcsftime ( wchar_t * str, size_t count, const wchar_t * format, const struct tm * time ) ;
(desde C95)

Convierte la información de fecha y hora desde un tiempo de calendario dado time a una cadena de caracteres anchos 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 wchar_t array para salida
count - número máximo de caracteres anchos a escribir
format - puntero a una cadena de caracteres anchos terminada en nulo que especifica el formato de conversión

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, incluyendo 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 configuración regional %EC (dependiente de la configuración regional) 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:

  • Incluye el 4 de enero
  • Incluye el primer jueves del año
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:

  • Incluye el 4 de enero
  • Incluye el primer jueves del año
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 (depende 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:

  • Incluye el 4 de enero
  • Incluye el primer jueves del año
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 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, ej. 二十四 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 desde UTC en formato ISO 8601 (por ejemplo, -0430 ), o ningún carácter si la información de 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

Número de caracteres anchos escritos en el array de caracteres anchos apuntado por str sin incluir el carácter terminador L ' \0 ' en caso de éxito. Si count se alcanzó antes de que toda la cadena pudiera almacenarse, 0 es retornado y el contenido queda indefinido.

Ejemplo

#include <locale.h>
#include <stdio.h>
#include <time.h>
#include <wchar.h>
int main(void)
{
    wchar_t buff[40];
    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 (wcsftime(buff, sizeof buff, L"%A %c", &my_time))
        printf("%ls\n", buff);
    else
        puts("wcsftime failed");
    setlocale(LC_ALL, "ja_JP.utf8");
    if (wcsftime(buff, sizeof buff, L"%A %c", &my_time))
        printf("%ls\n", buff);
    else
        puts("wcsftime failed");
}

Salida:

Sunday Sun Oct  9 08:10:20 2012
日曜日 2012年10月09日 08時10分20秒

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.29.5.1 La función wcsftime (p: TBD)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.29.5.1 La función wcsftime (p: 230-231)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.29.5.1 La función wcsftime (p: 439-440)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.24.5.1 La función wcsftime (p: 385-386)

Véase también

convierte un objeto tm a representación textual personalizada
(función)