Se recomienda usar Visual Studio 2017

localtime_s, _localtime32_s, _localtime64_s

 

Publicado: octubre de 2016

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Convierte un valor de hora y corrige la zona horaria local. Estas son versiones de localtime, _localtime32, _localtime64 con mejoras de seguridad, como se describe en características de seguridad de 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 deben rellenarse.

time
Puntero a la hora almacenada.

Cero si es correcta. El valor devuelto es un código de error si se produce un error. Códigos de error se definen en Errno.h. Para obtener una lista de estos errores, vea errno.

Condiciones de error

_tmtimeValor devueltoValor de_tmSe invoca el controlador de parámetros no válidos
NULLcualquieraEINVALNo modificado
No NULL (puntos de memoria válida)NULLEINVALTodos los campos valor -1
No NULL (puntos de memoria válida)menor que 0 o mayor que_MAX__TIME64_TEINVALTodos los campos valor -1No

En el caso de las condiciones de error primeras, se invoca el controlador de parámetros no válidos, como se describe en validación del parámetro. Si la ejecución puede continuar, estas funciones establecen errno en EINVAL y devuelven EINVAL.

El _localtime32_s función convierte una hora que se almacenan como un time_t valor y almacena el resultado en una estructura de tipo tm. El long valor timer representa los segundos transcurridos desde la medianoche (00: 00:00) del 1 de enero de 1970, hora UTC. Este valor suele obtenerse a partir del time (función).

_localtime32_scorrige la zona horaria local si el usuario establece primero la variable de entorno global TZ. Cuando TZ está establecida, otras tres variables de entorno (_timezone, _daylight, y _tzname) se establece también automáticamente. Si el TZ no se establece la variable, localtime32_s intenta utilizar la información de zona horaria especificada en la aplicación de fecha y hora en el Panel de Control. Si no se puede obtener esta información, se usa PST8PDT, lo que significa la zona horaria del Pacífico, de forma predeterminada. Consulte _tzset para obtener una descripción de estas variables. TZes una extensión de Microsoft y no forma parte de la definición del estándar ANSI de localtime.

System_CAPS_ICON_note.jpg Nota

El entorno de destino debería intentar determinar si el horario de verano está en vigor.

_localtime64_s, que utiliza la __time64_t estructura, permite expresar 23:59:59 del 31 de diciembre de 3000, hora universal coordinada (UTC), fechas, mientras que _localtime32_s representa fechas hasta las 23:59:59 del 18 de enero de 2038, hora UTC.

localtime_ses una función insertada que se evalúa como _localtime64_s, y time_t es equivalente a __time64_t. Si necesita que el compilador interprete time_t como lo 32 bits anterior time_t, puede definir _USE_32BIT_TIME_T. Hacer esto hará que localtime_s se evalúe como _localtime32_s. Esto no se recomienda porque puede producir un error de la aplicación después del 18 de enero de 2038, y no se permite en plataformas de 64 bits.

Los campos de tipo de estructura tm almacenar los valores siguientes, cada uno de los cuales es una int.

tm_sec
Segundos después del minuto (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á en vigor; 0 si el horario de verano no está en vigor; valor negativo si se desconoce el estado del horario de verano. Si el TZ se establece la variable de entorno, la biblioteca de tiempo de ejecución de C asume que las reglas adecuada a los Estados Unidos para implementar el cálculo del horario de verano (DST).

RutinaEncabezado necesario
localtime_s<time.h>
_localtime32_s<time.h>
_localtime64_s<time.h>

Para obtener más información sobre compatibilidad, vea Compatibility en la introducción.

// 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 );  
}  

Fri Apr 25 01:19:27 PM  

System::DateTime::ToLocalTime

Administración del tiempo
asctime_s, _wasctime_s
CTime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
_ftime, _ftime32, _ftime64
gmtime_s, _gmtime32_s, _gmtime64_s
hora local, _localtime32, _localtime64
tiempo, _time32, _time64
_tzset

Mostrar: