localtime_s, _localtime32_s, _localtime64_s
Converte um valor do tempo e corrige para o fuso horário local. Essas são versões de localtime, _localtime32, _localtime64 com aprimoramentos de segurança conforme descrito em Recursos de segurança no 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
Ponteiro para a estrutura de tempo a ser preenchida.time
Ponteiro para o tempo armazenado.
Valor de retorno
Nulo se com êxito. O valor de retorno é um código de erro se houver uma falha. Os códigos de erro são definidos em Errno.h. Para uma lista desses erros, consulte errno.
Condições de erro
_tm |
time |
Valor de retorno |
Valor em _tm |
Invoca o manipulador inválido do parâmetro |
---|---|---|---|---|
NULL |
any |
EINVAL |
Não modificados |
Sim |
Não NULL (pontos para a memória válido) |
NULL |
EINVAL |
Todos os campos definidos como -1 |
Sim |
Não NULL (pontos para a memória válido) |
menor que 0 ou maior que _MAX__TIME64_T |
EINVAL |
Todos os campos definidos como -1 |
Não |
No caso das primeiras duas condições de erro, o manipulador inválido do parâmetro é chamado, conforme descrito em Validação do parâmetro. Se a execução puder continuar, essas funções definirão errno como EINVAL e retornarão EINVAL.
Comentários
A função de _localtime32_s converte uma hora armazenados como um valor de time_t e armazena o resultado em uma estrutura de tipo tm. O valor timer de long representa os segundos decorridos desde meia-noite (00:00: 00), o 1º de janeiro de 1970, UTC. Esse valor é obtido em geral da função de time .
_localtime32_s corrige para o fuso horário local se o usuário define primeiramente a variável de ambiente global TZ. Quando TZ for definido, os outros três variáveis de ambiente (_timezone, _daylight, e _tzname) serão definidos automaticamente também. Se a variável de TZ não for definido, localtime32_s tenta usar as informações de fuso horário especificada no aplicativo de data/hora no painel de controle. Se essas informações não pode ser obtida, 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 uma parte da definição do padrão ANSI de localtime.
Dica
O ambiente de destino deve tentar determinar se o horário de verão é aplicado.
_localtime64_s, que usa a estrutura de __time64_t , permite que as datas são expressas anterior a 23:59: o 31 de dezembro, 59, 3000, coordenados hora universal (UTC), enquanto que _localtime32_s representar datas a 03:14: 7 de janeiro de 19, 2038, UTC.
localtime_s é uma função embutida que é avaliada para _localtime64_s, e time_t é equivalente a __time64_t. Se você precisar forçar o compilador para interpretar time_t como time_tde 32 bits antigo, você pode definir _USE_32BIT_TIME_T. Isso fará com que localtime_s é avaliada para _localtime32_s. Isso não é recomendado porque seu aplicativo pode falhar depois do 19 de janeiro de 2038, e não é permitido em plataformas de 64 bits.
Os campos do tipo TM da estrutura armazenam os valores a seguir, cada qual é int.
tm_sec
Segundos após o minuto (0 a 59).tm_min
Minutos após a hora (0 – 59).tm_hour
Hora depois da meia-noite (0 – 23).tm_mday
Dia do mês (1 – 31).tm_mon
Mês (0 – 11; janeiro = 0).tm_year
Ano (o ano atual menos 1900).tm_wday
Dia da semana (de 0 a 6; domingo = 0).tm_yday
Dia do ano (de 0 a 365; 1 de janeiro = 0).tm_isdst
Valor positivo se o horário de verão é aplicado; 0 se o horário de verão não for aplicado; valor negativo se o status do horário de verão é desconhecido. Se a variável de ambiente de TZ estiver definido, a biblioteca de tempo de execução C assumirá as regras apropriadas aos Estados Unidos para implementar o cálculo de horário de verão (DST).
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
localtime_s |
<time.h> |
_localtime32_s |
<time.h> |
_localtime64_s |
<time.h> |
Para obter mais informações sobre compatibilidade, consulte Compatibilidade na Introdução.
Exemplo
// 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 );
}
Saída de Exemplo
Fri Apr 25 01:19:27 PM
Equivalência do .NET Framework
Consulte também
Referência
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
gmtime_s, _gmtime32_s, _gmtime64_s