Partilhar via


localtime, _localtime32, _localtime64

Converte um valor de hora e corrige para o fuso horário local. Estão disponíveis versões mais seguras destas funções; ver localtime_s, _localtime32_s, _localtime64_s.

Sintaxe

struct tm *localtime( const time_t *sourceTime ); // See note in remarks section about linkage
struct tm *_localtime32( const __time32_t *sourceTime );
struct tm *_localtime64( const __time64_t *sourceTime );

Parâmetros

sourceTime
Ponteiro para o tempo armazenado.

Valor de retorno

Retornar um ponteiro para o resultado da estrutura ou NULL se a data passada para a função for:

  • Antes da meia-noite, 1º de janeiro de 1970.

  • Depois de 03:14:07, 19 de janeiro de 2038, UTC (usando _time32 e time32_t).

  • Depois das 23:59:59, 31 de dezembro de 3000, UTC (usando _time64 e __time64_t).

_localtime64, que usa a estrutura, permite que as __time64_t datas sejam expressas até 23:59:59, 31 de dezembro de 3000, tempo universal coordenado (UTC), enquanto _localtime32 representa datas até 23:59:59 18 de janeiro de 2038, UTC.

localtime é uma função embutida que é avaliada como _localtime64, e time_t é equivalente a __time64_t. Se você precisar forçar o compilador a interpretar time_t como o antigo 32-bit time_t, você pode definir _USE_32BIT_TIME_T. _USE_32BIT_TIME_T causas localtime a avaliar a _localtime32. Não recomendamos _USE_32BIT_TIME_To , porque seu aplicativo pode falhar após 18 de janeiro de 2038 e não é permitido em plataformas de 64 bits.

Os campos do tipo tm de estrutura armazenam os seguintes valores, cada um dos quais é um int:

Campo Description
tm_sec Segundos após minuto (0 - 59).
tm_min Minutos após a hora (0 - 59).
tm_hour Horas desde a meia-noite (0 - 23).
tm_mday Dia do mês (1 - 31).
tm_mon Mês (0 - 11; Janeiro = 0).
tm_year Ano (ano corrente menos 1900).
tm_wday Dia da semana (0 - 6; Domingo = 0).
tm_yday Dia do ano (0 - 365; Janeiro 1 = 0).
tm_isdst Valor positivo se o horário de verão estiver em vigor; 0 se o horário de verão não estiver em vigor; valor negativo se o status do horário de verão for desconhecido.

Se a TZ variável de ambiente estiver definida, a biblioteca de tempo de execução C assumirá regras apropriadas aos Estados Unidos para implementar o cálculo do horário de verão (DST).

Observações

A localtime função converte um tempo armazenado como um time_t valor e armazena o resultado em uma estrutura do tipo tm. O long valor sourceTime representa os segundos decorridos desde a meia-noite (00:00:00), 1 de janeiro de 1970, UTC. Este valor é frequentemente obtido a partir da time função.

As versões de 32 bits e 64 bits do gmtime, mktime, mkgmtimee localtime todas usam uma única tm estrutura por thread para a conversão. Cada chamada para uma dessas rotinas destrói o resultado da chamada anterior.

localtime Corrige o fuso horário local se o usuário primeiro definir a variável TZde ambiente global . Quando TZ é definido, três outras variáveis de ambiente (_timezone, _daylight, e _tzname) também são definidas automaticamente. Se a TZ variável não estiver definida, localtime tente usar as informações de fuso horário especificadas no aplicativo Data/Hora no Painel de Controle. Se essas informações não puderem ser obtidas, PST8PDT, que significa o fuso horário do Pacífico, será usado por padrão. Consulte _tzset para obter uma descrição dessas variáveis. TZ é uma extensão da Microsoft e não faz parte da definição padrão ANSI de localtime.

Observação

O ambiente de destino deve tentar determinar se o horário de verão está em vigor.

Estas funções validam os seus parâmetros. Se sourceTime for um ponteiro nulo, ou se o sourceTime valor for negativo, essas funções invocarão um manipulador de parâmetros inválido, conforme descrito em Validação de parâmetro. Se a execução for permitida para continuar, as funções retornarão NULL e serão definidas errno como EINVAL.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, consulte Estado global na CRT.

Observação

Quando você usa o Windows SDK versão 10.0.26100.6901 e Visual Studio 2026 ou posterior juntos, localtime não é mais static inline (ligação interna). Em vez disso, é inline (ligação externa).
Para retornar ao comportamento anterior, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 antes de incluir quaisquer cabeçalhos CRT. Por padrão, _STATIC_INLINE_UCRT_FUNCTIONS é definido como 0.
Essa alteração aumenta a conformidade do UCRT com o padrão C++ e melhora a compatibilidade com módulos C++.

Requerimentos

Rotina Cabeçalho C necessário Cabeçalho C++ necessário
localtime, _localtime32, _localtime64 <time.h> <ctime> ou <time.h>

Para obter mais informações sobre compatibilidade, consulte Compatibilidade.

Example

// 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 também

Gestão do tempo
asctime, _wasctime
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
_ftime, _ftime32, _ftime64
gmtime, _gmtime32, _gmtime64
localtime_s, _localtime32_s, _localtime64_s
time, _time32, _time64
_tzset