localtime_s, _localtime32_s, _localtime64_s
Convierte un valor de hora y se corrige en la zona horaria local.Éstas son versiones de localtime, _localtime32, _localtime64 con mejoras de seguridad como se describe en Características de seguridad en CRT.
errno_t localtime_s(
struct tm* _tm,
const time_t *time
);
errno_t _localtime32_s(
struct tm* _tm,
const time32_t *time
);
errno_t _localtime64_s(
struct tm* _tm,
const _time64_t *time
);
Parámetros
_tm
Puntero a la estructura de tiempo que se completará.time
Puntero al tiempo almacenado.
Valor devuelto
cero si correctamente.el valor devuelto es un código de error si hay un error.Los códigos de error se definen en Errno.h.Para obtener una lista de estos errores, vea errno.
condiciones de error
_tm |
time |
Valor devuelto |
Valor de _tm |
Invoca el controlador no válido de parámetro |
---|---|---|---|---|
NULL |
cualquier |
EINVAL |
no modificado |
Sí |
No NULL (señala memoria válido) |
NULL |
EINVAL |
Todos los campos establecidos en -1 |
Sí |
No NULL (señala memoria válido) |
menor que 0 o mayor que _MAX__TIME64_T |
EINVAL |
Todos los campos establecidos en -1 |
No |
En el caso de las primeras dos condiciones de error, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, este errno establecido funciones a EINVAL y a EINVALreturn.
Comentarios
La función de _localtime32_s convierte una hora almacenada como valor de time_t y almacena el resultado en una estructura de tmescrito.El valor timer de long representa los segundos transcurridos desde la medianoche (00:00: 00), el 1 de enero de 1970, hora UTC.Este valor se normalmente obtiene de la función de time .
_localtime32_s corrige en la zona horaria local si el usuario primero establece la variable de entorno global TZ.Cuando se establece TZ , otras tres variables de entorno (_timezone, _daylight, y _tzname) se establecen automáticamente también.Si la variable de TZ no se establece, los intentos de localtime32_s de utilizar la información de zona horaria especificada en la aplicación de fecha y hora en Panel de control.Si esta información no puede obtenerse, PST8PDT, lo que significa que la zona horaria del Pacífico, se utiliza de forma predeterminada.Vea _tzset para obtener una descripción de estas variables.TZ es una extensión de Microsoft y no una parte de la definición del estándar ANSI de localtime.
[!NOTA]
El entorno de destino debe intentar determinar si el horario de verano está vigente.
_localtime64_s, que utiliza la estructura de __time64_t , permite que las fechas están expresadas hacia arriba con 23:59: 59, el 31 de diciembre, 3000, hora universal coordinada (UTC) (UTC), mientras que _localtime32_s representa las fechas con 03:14: 7 de enero de 19, 2038, La hora UTC.
localtime_s es una función inline que se evalúa como _localtime64_s, y time_t es equivalente a __time64_t.Si necesita hacer que el compilador para interpretar time_t como time_tde 32 bits anterior, puede definir _USE_32BIT_TIME_T.Hacer esto hará localtime_s evalúe _localtime32_s.Esto no es recomendable porque la aplicación puede producir un error después del 19 de enero de 2038, y no se permite en plataformas de 64 bits.
Los campos de tipo TM de estructura almacenan valores siguientes, que es int.
tm_sec
Segundos después de min (0 – 59).tm_min
minutos después de la hora (0 – 59).tm_hour
horas después de la medianoche (0 – 23).tm_mday
Día del mes (1 – 31).tm_mon
mes (0 – 11; enero = 0).tm_year
Año (año actual menos 1900).tm_wday
día de la semana (0 – 6; domingo = 0).tm_yday
Día del año (0 – 365; 1 de enero = 0).tm_isdst
Valor positivo si el horario de verano está vigente; 0 si el horario de verano no está vigente; valor negativo si el estado de horario de verano es desconocido.Si se establece la variable de entorno TZ , la biblioteca en tiempo de ejecución de C supone las reglas adecuadas a los Estados Unidos para implementar el cálculo de tiempo de guardar de luz (DST).
Requisitos
rutina |
Encabezado necesario |
---|---|
localtime_s |
<time.h> |
_localtime32_s |
<time.h> |
_localtime64_s |
<time.h> |
Para obtener más información de compatibilidad, vea compatibilidad en la Introducción.
Ejemplo
// crt_localtime_s.c
/* This program uses _time64 to get the current time
* and then uses _localtime64_s() to convert this time to a structure
* representing the local time. The program converts the result
* from a 24-hour clock to a 12-hour clock and determines the
* proper extension (AM or PM).
*/
#include <stdio.h>
#include <string.h>
#include <time.h>
int main( void )
{
struct tm newtime;
char am_pm[] = "AM";
__time64_t long_time;
char timebuf[26];
errno_t err;
// Get time as 64-bit integer.
_time64( &long_time );
// Convert to local time.
err = _localtime64_s( &newtime, &long_time );
if (err)
{
printf("Invalid argument to _localtime64_s.");
exit(1);
}
if( newtime.tm_hour > 12 ) // Set up extension.
strcpy_s( am_pm, sizeof(am_pm), "PM" );
if( newtime.tm_hour > 12 ) // Convert from 24-hour
newtime.tm_hour -= 12; // to 12-hour clock.
if( newtime.tm_hour == 0 ) // Set hour to 12 if midnight.
newtime.tm_hour = 12;
// Convert to an ASCII representation.
err = asctime_s(timebuf, 26, &newtime);
if (err)
{
printf("Invalid argument to asctime_s.");
exit(1);
}
printf( "%.19s %s\n", timebuf, am_pm );
}
Resultados del ejemplo
Fri Apr 25 01:19:27 PM
Equivalente en .NET Framework
System:: fecha y hora:: ToLocalTime
Vea también
Referencia
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
gmtime_s, _gmtime32_s, _gmtime64_s