localtime, _localtime32, _localtime64

Convierte un valor de hora y lo corrige para la zona horaria local. Existen versiones más seguras de estas funciones disponibles; consulte localtime_s, _localtime32_s, _localtime64_s.

Sintaxis

struct tm *localtime( const time_t *sourceTime );
struct tm *_localtime32( const __time32_t *sourceTime );
struct tm *_localtime64( const __time64_t *sourceTime );

Parámetros

sourceTime
Puntero a la hora almacenada.

Valor devuelto

Devuelve un puntero al resultado de la estructura o NULL si la fecha que se pasa a la función es:

  • Antes de la medianoche del 1 de enero de 1970.

  • Después de las 03:14:07 del 19 de enero de 2038, hora UTC (mediante _time32 y time32_t).

  • Después de las 23:59:59 del 31 de diciembre de 3000, UTC (mediante _time64 y __time64_t).

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

localtime es una función insertada que se evalúa como _localtime64 y time_t es equivalente a __time64_t. Si necesita forzar el compilador para interpretar time_t como el antiguo time_tde 32 bits, puede definir _USE_32BIT_TIME_T. _USE_32BIT_TIME_T hace que localtime se evalúe como _localtime32. No se recomienda _USE_32BIT_TIME_T, ya que la aplicación puede producir un error después del 18 de enero de 2038 y no se permite en plataformas de 64 bits.

Los campos del tipo de estructura tm almacenan los valores siguientes, cada uno de los cuales es un valor int:

Campo Descripción
tm_sec Segundos después del minuto (0 - 59).
tm_min Minutos después de la hora (0 - 59).
tm_hour Horas desde 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 se establece la variable de entorno TZ, la biblioteca en tiempo de ejecución de C usa las reglas correspondientes a los Estados Unidos para implementar el cálculo del horario de verano (DST).

Comentarios

La función localtime convierte una hora almacenada como valor time_t y almacena el resultado en una estructura de tipo tm. El valor longsourceTime representa los segundos transcurridos desde la medianoche (00:00:00) del 1 de enero de 1970, hora UTC. Este valor se obtiene a menudo de la time función .

Las versiones de 32 y 64 bits de gmtime, mktime, mkgmtime y localtime usan una única estructura tm por subproceso para llevar a cabo la conversión. Cada llamada a una de estas rutinas destruye el resultado de la llamada anterior.

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

Nota:

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

Estas funciones validan sus parámetros. Si sourceTime es un puntero nulo o si el sourceTime valor es negativo, estas funciones invocan un controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, las funciones devuelven NULL y establecen 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.

Requisitos

Routine Encabezado C necesario Encabezado C++ necesario
localtime, _localtime32, _localtime64 <time.h> <ctime> o <time.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

// crt_localtime.cpp
// compile with: /W3
// This program uses _time64 to get the current time
// and then uses localtime64() 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;

    _time64( &long_time );             // Get time as 64-bit integer.
                                       // Convert to local time.
    newtime = _localtime64( &long_time ); // C4996
    // Note: _localtime64 deprecated; consider _localetime64_s

    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;

    char buff[30];
    asctime_s( buff, sizeof(buff), newtime );
    printf( "%.19s %s\n", buff, am_pm );
}
Tue Feb 12 10:05:58 AM

Consulte también

Administración de tiempo
asctime, _wasctime
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
_ftime, _ftime32, _ftime64
gmtime, _gmtime32, _gmtime64
localtime_s, _localtime32_s, _localtime64_s
time, _time32, _time64
_tzset