localtime
, _localtime32
, _localtime64
Converte um valor temporal e o corrige de acordo com o fuso horário local. Versões mais seguras dessas funções estão disponíveis; confira localtime_s
, _localtime32_s
, _localtime64_s
.
Sintaxe
struct tm *localtime( const time_t *sourceTime );
struct tm *_localtime32( const __time32_t *sourceTime );
struct tm *_localtime64( const __time64_t *sourceTime );
Parâmetros
sourceTime
Ponteiro para a hora armazenada.
Valor retornado
Retornar um ponteiro para o resultado da estrutura ou NULL
se a data passada para a função for:
Antes da meia-noite de 1º de janeiro de 1970.
Após 03:14:07 de 19 de janeiro de 2038, UTC (usando
_time32
etime32_t
).Após 23:59:59 de 31 de dezembro de 3000, UTC (usando
_time64
e__time64_t
).
_localtime64
, que usa a estrutura __time64_t
, permite que as datas sejam expressas até 23:59:59 de 31 de dezembro de 3000, no UTC, enquanto _localtime32
representa datas até 23:59:59 de 18 de janeiro de 2038, no 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 time_t
antigo de 32 bits, poderá definir _USE_32BIT_TIME_T
. _USE_32BIT_TIME_T
faz com que localtime
avaliar a _localtime32
. Não recomendamos _USE_32BIT_TIME_T
, 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 de estrutura tm
armazenam seguintes valores, cada um dos quais é um int
:
Campo | Descrição |
---|---|
tm_sec |
Segundos após o minuto (0 a 59). |
tm_min |
Minutos após a hora (0 a 59). |
tm_hour |
Horas desde a meia-noite (0 a 23). |
tm_mday |
Dia do mês (1 a 31). |
tm_mon |
Mês (0 a 11; janeiro = 0). |
tm_year |
Ano (ano atual menos 1900). |
tm_wday |
Dia da semana (0 a 6; domingo = 0). |
tm_yday |
Dia do ano (0 a 365; 1º de janeiro = 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 variável de ambiente TZ
estiver definida, a biblioteca em tempo de execução C presume que as regras dos Estados Unidos serão usadas para implementar o cálculo do DST (horário de verão).
Comentários
A função localtime
converte uma hora armazenada como um valor time_t
e armazena o resultado em uma estrutura do tipo tm
. O valor long
sourceTime
representa os segundos passados desde a meia-noite (00:00:00) de 1º de janeiro de 1970, no UTC. Esse valor geralmente é obtido da time
função.
As versões de 32 e de 64 bits de gmtime
, mktime
, mkgmtime
e localtime
usam uma estrutura simples tm
por thread para a conversão. Cada chamada a uma dessas rotinas destrói o resultado da chamada anterior.
localtime
corrige o fuso horário local se o usuário definir a variável de ambiente global TZ
primeiro. Ao definir TZ
, três outras variáveis de ambiente (_timezone
, _daylight
e _tzname
) também serão definidas automaticamente. Se a TZ
variável não estiver definida, localtime
tentará 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. Confira _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.
Essas funções validam 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âmetro inválido, conforme descrito em Validação de parâmetro. Se a execução tiver permissão para continuar, essas funções retornarão NULL
e definirão errno
como EINVAL
.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Requisitos
Rotina | Cabeçalho C necessário | Cabeçalho C++ necessário |
---|---|---|
localtime , _localtime32 , _localtime64 |
<time.h> |
<ctime> ou <time.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// 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
Confira também
Gerenciamento de 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