Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Converte um time_t valor de hora em uma tm estrutura e corrige para o fuso horário local. Essas funções são versões do , _localtime32com aprimoramentos delocaltime segurança, _localtime64 conforme descrito em Recursos de segurança no CRT.
Sintaxe
errno_t localtime_s( // See note in remarks section about linkage
struct tm* const tmDest,
time_t const* const sourceTime
);
errno_t _localtime32_s(
struct tm* tmDest,
__time32_t const* sourceTime
);
errno_t _localtime64_s(
struct tm* tmDest,
__time64_t const* sourceTime
);
Parâmetros
tmDest
Ponteiro para a estrutura de tempo a ser preenchida.
sourceTime
Ponteiro para o tempo armazenado.
Valor de retorno
Zero se for bem-sucedido. 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 obter uma lista desses erros, consulte errno.
Condições de erro
tmDest |
sourceTime |
Valor de retorno | Valor em tmDest |
Invoca manipulador de parâmetros inválido |
|---|---|---|---|---|
NULL |
any | EINVAL |
Não modificado | Yes |
Não NULL (aponta para a memória válida) |
NULL |
EINVAL |
Todos os campos definidos como -1 | Yes |
Não NULL (aponta para a memória válida) |
inferior a 0 ou superior a _MAX__TIME64_T |
EINVAL |
Todos os campos definidos como -1 | Não |
As duas primeiras condições de erro invocam o manipulador de parâmetros inválido, conforme descrito em Validação de parâmetros. Se a execução for permitida para continuar, essas funções serão definidas errno como EINVAL e retornarão EINVAL.
Observações
A localtime_s função converte um tempo armazenado como um time_t valor e armazena o resultado em uma estrutura do tipo tm. O time_t 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.
localtime_s 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_s 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.
_localtime64_s, que usa a estrutura, permite que as __time64_t datas sejam expressas até 23:59:59, 18 de janeiro de 3001, tempo universal coordenado (UTC), enquanto _localtime32_s representa datas até 23:59:59 18 de janeiro de 2038, UTC.
localtime_s é uma função embutida que é avaliada como _localtime64_s, e time_t é equivalente a __time64_t. Se você precisar forçar o compilador a interpretar time_t como o antigo de 32 bits time_t, você pode definir _USE_32BIT_TIME_T, o que faz com localtime_s que avalie para _localtime32_s. 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 intarquivo .
| 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).
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_s 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_s, _localtime32_s, _localtime64_s |
<time.h> |
<ctime> ou <time.h> |
Para obter mais informações sobre compatibilidade, consulte Compatibilidade.
Example
// 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
Consulte também
Gestão do tempo
asctime_s, _wasctime_s
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
_ftime, _ftime32, _ftime64
gmtime_s, _gmtime32_s, _gmtime64_s
localtime, _localtime32, _localtime64
time, _time32, _time64
_tzset