Compartir a través de


strftime, wcsftime, , _strftime_l, _wcsftime_l

Da formato a una cadena de hora.

Sintaxis

size_t strftime(
   char *strDest,
   size_t maxsize,
   const char *format,
   const struct tm *timeptr
);
size_t _strftime_l(
   char *strDest,
   size_t maxsize,
   const char *format,
   const struct tm *timeptr,
   _locale_t locale
);
size_t wcsftime(
   wchar_t *strDest,
   size_t maxsize,
   const wchar_t *format,
   const struct tm *timeptr
);
size_t _wcsftime_l(
   wchar_t *strDest,
   size_t maxsize,
   const wchar_t *format,
   const struct tm *timeptr,
   _locale_t locale
);

Parámetros

strDest
Cadena de salida

maxsize
Tamaño del búfer strDest, expresado en caracteres (char o wchar_t).

format
Cadena de control de formato.

timeptr
Estructura de datos tm.

locale
Configuración regional que se va a usar.

Valor devuelto

strftime devuelve el número de caracteres que se colocan en strDest y wcsftime devuelve el número correspondiente de caracteres anchos.

Si el número total de caracteres, incluido el carácter nulo final, es superior a maxsize, strftime y wcsftime devuelven 0 y el contenido de strDest es indeterminado.

El número de caracteres de strDest es igual al número de caracteres literales de format, además de los caracteres que se pueden agregar a format través de códigos de formato. El valor null de terminación de una cadena no se cuenta en el valor devuelto.

Comentarios

Las strftime funciones y wcsftime dan formato al valor de tm hora en timeptr según el argumento proporcionado format y almacenan el resultado en el búfer strDest. Como máximo se colocan maxsize caracteres en la cadena. Para obtener una descripción de los campos de la estructura timeptr, consulte asctime. wcsftime es el equivalente en caracteres anchos de strftime; su argumento de puntero de cadena señala a una cadena con caracteres anchos. Por lo demás, estas funciones se comportan exactamente igual.

Esta función valida sus parámetros. Si strDest, formato timeptr es un puntero nulo, o si la tm estructura de datos direccionada por timeptr no es válida (por ejemplo, si contiene valores fuera del intervalo para la hora o fecha), o si la format cadena contiene un código de formato no válido, se invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, la función devuelve 0 y establece errno en EINVAL.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina TCHAR.H _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_tcsftime strftime strftime wcsftime

El argumento format consta de uno o más códigos; como en printf, los códigos de formato están precedidos por un signo de porcentaje (%). Los caracteres que no comienzan por % se copian sin cambios en strDest. La categoría LC_TIME de la configuración regional actual afecta al formato de salida de strftime (Para obtener más información sobre LC_TIME, consulte setlocale). Las funciones strftime y wcsftime usan la configuración regional establecida actualmente. Las versiones _strftime_l y _wcsftime_l de estas funciones son idénticas, salvo que toman la configuración regional como un parámetro y lo usan en vez de la configuración regional establecida en ese momento. Para obtener más información, vea Locale.

Las funciones strftime admiten estos códigos de formato:

Código Cadena de reemplazo
%a Nombre abreviado del día de la semana en la configuración regional
%A Nombre completo del día de la semana en la configuración regional
%b Nombre del mes abreviado en la configuración regional
%B Nombre completo del mes en la configuración regional
%c Representación de fecha y hora adecuada para la configuración regional
%C Año dividido entre 100 y truncado en un entero, como un número decimal (00-99)
%d Día del mes como un número decimal (01 - 31)
%D Equivalente a %m/%d/%y.
%e Día del mes como número decimal (1 a 31), donde los dígitos individuales van precedidos por un espacio
%F Equivalente a %Y-%m-%d.
%g Los últimos 2 dígitos del año basado en la semana ISO 8601 como un número decimal (00 - 99)
%G Año basado en la semana ISO 8601 como un número decimal
%h Nombre del mes abreviado (equivalente a %b)
%H Hora en formato de 24 horas (00 - 23)
%I Hora en formato de 12 horas (01 - 12)
%j Día del año como un número decimal (001 - 366)
%m Mes como un número decimal (01 - 12)
%M Minuto como un número decimal (00 - 59)
%n Carácter de nueva línea (\n)
%p Indicador A.M./P.M. de la configuración regional para el reloj de 12 horas
%r Hora del reloj de 12 horas de la configuración regional
%R Equivalente a %H:%M.
%S Segundo como un número decimal (00 - 59)
%t Un carácter de tabulación horizontal (\t)
%T Equivalente a %H:%M:%S, el formato de hora ISO 8601
%u Día de la semana ISO 8601 como número decimal (1 - 7; el lunes es 1)
%U Número de semana del año como un número decimal (00 - 53), donde el primer domingo es el primer día de la semana 1
%V Número de semana ISO 8601 como un número decimal (00 - 53)
%w Día de la semana como un número decimal (0 - 6; el domingo es 0)
%W Número de semana del año como un número decimal (00 - 53), donde el primer lunes es el primer día de la semana 1
%x Representación de la fecha para la configuración regional
%X Representación de la hora para la configuración regional
%y Año sin siglo como número decimal (00 - 99)
%Y Año con siglo como número decimal
%z Desplazamiento de UTC en formato ISO 8601; no hay caracteres si se desconoce la zona horaria
%Z El nombre o la abreviatura de la zona horaria de la configuración regional, dependiendo de la configuración del registro; sin caracteres si la zona horaria es desconocida
%% Signo de porcentaje

Como en la función printf, la marca # puede aplicar un prefijo a cualquier código de formato. En ese caso, el significado del código de formato cambia del siguiente modo.

Código de formato Significado
%#a, %#A, %#b, %#B, , %#G%#g, %#h, %#n, %#Z%#z%#p%#t%#u%#w%#X%#% La marca # se omite.
%#c Representación de fecha y hora larga, adecuada para la configuración regional. Por ejemplo: "Martes, 14 de marzo de 1995, 12:41:29".
%#x Representación de fecha larga, adecuada para la configuración regional. Por ejemplo: "Martes, 14 de marzo de 1995".
%#d, %#D, %#e, %#F, , %#I%#H%#j%#m%#M%#r%#R%#S%#T%#U%#V%#W%#y%#Y Se quitan los ceros a la izquierda o los espacios (en caso de haberlos).

La semana ISO 8601 y el año basado en semana producidos por %V, %gy %G, usa una semana que comienza el lunes. La semana 1 es la semana que contiene el cuarto día de enero, que es la primera semana que incluye al menos cuatro días del año. Si el primer lunes del año es el 2°, 3° o 4°, los días anteriores forman parte de la última semana del año anterior. Durante esos días, %V se reemplaza por 53, además %g y %G se reemplazan por los dígitos del año anterior.

Nota:

Cuando se usa una de las funciones strftime con un puntero tm devuelto desde gmtime, los valores impresos a través de los especificadores %Z y %z no serán precisos. Esto se debe a que la estructura tm especificada por el estándar de C no contiene la información para el nombre ni el desplazamiento de la zona horaria. En su lugar, la información de la zona horaria se rellena a través de las variables globales _timezone y _dstbias.

Requisitos

Routine Encabezado necesario
strftime <time.h>
wcsftime <time.h> o <wchar.h>
_strftime_l <time.h>
_wcsftime_l <time.h> o <wchar.h>

Las funciones _strftime_l y _wcsftime_l son específicas de Microsoft. Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

Vea el ejemplo de time.

Consulte también

Configuración regional
Administración de tiempo
Manipulación de cadenas
localeconv
setlocale, _wsetlocale
Funciones strcoll
strxfrm, wcsxfrm, , _strxfrm_l, _wcsxfrm_l