Unix timestamp para data e hora – conversor de timestamp epoch

Última revisão do conteúdo:

Cole um timestamp Unix e leia a data e a hora. O valor 1700000000 corresponde a 14 de novembro de 2023, 22:13:20 UTC. O conversor reconhece segundos, milissegundos, microssegundos e nanossegundos pelo número de algarismos, e a opção Hora local mostra a hora do seu dispositivo.

Pode introduzir segundos, milissegundos, microssegundos ou nanossegundos. A unidade é reconhecida pelo número de algarismos.

UTC
Fuso horário

Com UTC, a hora aparece sem desvio, tal como a registam os logs e as bases de dados. Com a hora local, aparece no fuso horário do seu dispositivo, juntamente com o desvio.

para

O que é um Unix timestamp, ou tempo Unix?

Um Unix timestamp, também chamado Era Unix ou tempo Unix, é a contagem de segundos desde as 00:00:00 UTC de 1 de janeiro de 1970[1]. Esse instante zero chama-se época Unix. O UTC é o tempo universal coordenado, a referência a partir da qual se contam os fusos horários do mundo.

A forma de contar está definida na norma POSIX, o padrão comum dos sistemas do tipo Unix. Nela, cada dia tem exatamente 86 400 segundos[2]. Os segundos bissextos acrescentados ao UTC não têm número próprio nesta contagem[1].

O timestamp não contém informação sobre o fuso horário[3]. O número 1700000000 descreve o mesmo instante em Lisboa e em São Paulo. Só muda a hora que os relógios das duas cidades mostram nesse instante.

Cinco relógios de parede com os nomes Sídney, Londres, Monterrey, Vancouver e New York
Os relógios de cinco cidades mostram cinco horas diferentes. Um único timestamp Unix descreve o mesmo instante nos cinco mostradores, e só muda a hora lida em cada fuso. Foto: Luis Cortes, Unsplash.

Que data corresponde a um Unix timestamp?

O Unix timestamp 1700000000 corresponde a 14 de novembro de 2023, às 22:13:20 UTC. Em Portugal continental eram as mesmas 22:13:20, porque no inverno a hora legal coincide com o UTC[4]. Em São Paulo eram 19:13:20, porque a hora de Brasília é UTC-3[5].

Cole qualquer timestamp no campo Timestamp Unix, e a data aparece no campo Data e hora enquanto escreve. Sob o resultado, o conversor indica em que unidade leu o número.

O conversor reconhece a unidade pelo número de algarismos. Um timestamp atual em segundos tem dez algarismos. Um valor vindo de JavaScript tem treze, porque Date.now() devolve milissegundos[6]. O resultado de time.time_ns() em Python tem dezanove algarismos, porque essa função conta nanossegundos[7].

A opção Hora local do seletor Fuso horário mostra a hora do seu dispositivo com o desvio do respetivo fuso.

Para calcular o timestamp de uma data, use o conversor de data para Unix timestamp.

Como converter um Unix timestamp em data? Fórmula e exemplo

No tempo Unix, cada dia tem exatamente 86 400 segundos[2]. Para converter um timestamp em data, divida-o por 86 400. A parte inteira do resultado é o número de dias completos desde 1 de janeiro de 1970. O resto da divisão é a hora desse dia em segundos.

Tome o timestamp 1700000000. Dividido por 86 400, dá 19 675 dias completos. O resto é de 80 000 segundos.

Contando 1 de janeiro de 1970 como dia zero, o dia 19 675 é 14 de novembro de 2023. O resto é a hora desse dia: 80 000 segundos são 22 horas, 13 minutos e 20 segundos. O resultado completo é 2023-11-14 22:13:20 UTC.

Um timestamp em milissegundos divide-se primeiro por 1000, um em microssegundos por um milhão e um em nanossegundos por mil milhões. O conversor acima faz essa divisão sozinho antes de calcular a data. O conversor de data para Unix timestamp faz o cálculo inverso, de uma data para um número de segundos.

Converta primeiro para decimal um timestamp escrito em hexadecimal, como 6553F100. O conversor de decimal para hexadecimal faz isso depois de clicar em Trocar ordem. O valor 6553F100 é 1700000000 em decimal.

Que datas correspondem aos Unix timestamps redondos?

Reunimos timestamps redondos e limite: a época, os dias à sua volta, cada cem milhões de segundos a mais, o timestamp com os algarismos de 1 a 0 por ordem e os limites de um inteiro de 32 bits. Todas as datas estão em UTC, tal como o conversor as mostra com a opção UTC.
TimestampData e hora em UTCO que marca este valor
-21474836481901-12-13 20:45:52Menor inteiro de 32 bits com sinal
-864001969-12-31 00:00:00Um dia antes da época
-11969-12-31 23:59:59Último segundo antes da época
01970-01-01 00:00:00Época Unix
864001970-01-02 00:00:00Fim do primeiro dia
10000000002001-09-09 01:46:40Mil milhões de segundos
12345678902009-02-13 23:31:30Algarismos de 1 a 0 por ordem
15000000002017-07-14 02:40:001500 milhões de segundos
16000000002020-09-13 12:26:401600 milhões de segundos
17000000002023-11-14 22:13:201700 milhões de segundos
17356896002025-01-01 00:00:00Início de 2025
17672256002026-01-01 00:00:00Início de 2026
18000000002027-01-15 08:00:001800 milhões de segundos
20000000002033-05-18 03:33:202000 milhões de segundos
21474836472038-01-19 03:14:07Maior inteiro de 32 bits com sinal
41024448002100-01-01 00:00:00Início de 2100
42949672952106-02-07 06:28:15Maior inteiro de 32 bits sem sinal
O tempo Unix chegou ao valor 1234567890, com os algarismos de 1 a 0 por ordem, na sexta-feira, 13 de fevereiro de 2009, às 23:31:30 UTC[8]. Em Lisboa era a mesma hora. Um contador guardado como inteiro de 32 bits com sinal transborda depois do valor 2147483647. O valor passa então a -2147483648, que corresponde a 13 de dezembro de 1901[9]. Em binário, 2147483647 são 31 algarismos 1. É assim que o mostra o conversor de decimal para binário.

Como saber se um timestamp está em segundos, milissegundos ou nanossegundos?

A unidade reconhece-se pelo número de algarismos. Qualquer timestamp entre 9 de setembro de 2001 e 20 de novembro de 2286 tem dez algarismos em segundos. Para as datas atuais, o comprimento em cada unidade mantém-se, por isso, igual.
UnidadeAlgarismos hojeO instante 1700000000 nesta unidadeOnde a encontra
Segundos101700000000time() do PHP, campo exp de um JWT, timestamps no Discord
Milissegundos131700000000000Date.now() do JavaScript, EPOCHTODATE com a unidade 2
Microssegundos161700000000000000EPOCHTODATE com a unidade 3
Nanossegundos191700000000000000000time.time_ns() do Python
A função time() do PHP devolve o número de segundos desde a época[3]. Os campos exp, nbf e iat de um JWT contêm um número de segundos que pode ter parte decimal[10]. O Discord espera o timestamp em segundos[11]. Date.now() devolve milissegundos[6], e time.time_ns() do Python devolve nanossegundos[7]. A função EPOCHTODATE do Google Sheets aceita a unidade 1 para segundos, 2 para milissegundos e 3 para microssegundos[12].

Que fórmula ou comando converte um Unix timestamp em data?

Cada linha converte o timestamp 1700000000 em 14 de novembro de 2023, 22:13:20 UTC. Verificámos com este timestamp os resultados do comando date, do Python e do JavaScript.
OndeFórmula ou comandoResultado para 1700000000
Excel=A1/86400+DATA(1970;1;1)2023-11-14 22:13:20 depois de dar à célula um formato de data e hora
Excel, timestamp em milissegundos=A1/86400000+DATA(1970;1;1)A mesma data para o valor 1700000000000
Google Sheets=EPOCHTODATE(A1)Data e hora em UTC
Google Sheets, milissegundos=EPOCHTODATE(A1; 2)Data e hora em UTC para o valor 1700000000000
MySQLSELECT FROM_UNIXTIME(1700000000);2023-11-14 22:13:20 se a sessão estiver em UTC
PostgreSQLSELECT to_timestamp(1700000000);2023-11-14 22:13:20+00 se a sessão estiver em UTC
Pythondatetime.fromtimestamp(1700000000, tz=timezone.utc)2023-11-14 22:13:20+00:00
JavaScriptnew Date(1700000000 * 1000).toISOString()2023-11-14T22:13:20.000Z
Linux, comando datedate -u -d @1700000000Tue Nov 14 22:13:20 UTC 2023
PowerShell 7.1 e posteriorGet-Date -UnixTimeSeconds 1700000000 -AsUTCData e hora em UTC no formato regional do sistema
O MySQL devolve o resultado de FROM_UNIXTIME no fuso horário da sessão, ou seja, no fuso configurado para a ligação atual[13]. O PostgreSQL converte um timestamp com a função to_timestamp no tipo timestamp with time zone[14]. O PostgreSQL mostra os valores desse tipo no fuso definido no parâmetro TimeZone[15]. Em Python, a linha precisa da importação from datetime import datetime, timezone. O método utcfromtimestamp está obsoleto desde a versão 3.12, e a documentação recomenda fromtimestamp com o fuso UTC[16]. O comando date aceita o timestamp precedido do sinal @[17]. O Get-Date tem os parâmetros -UnixTimeSeconds e -AsUTC desde o PowerShell 7.1[18].

Como preparar a fórmula no Excel e no Google Sheets para mostrar uma data?

Para um único timestamp, o campo acima é mais rápido. Uma coluna inteira de timestamps exportados de uma base de dados converte-se com uma fórmula arrastada para baixo.

  1. Excel: fórmula com a função DATA

    Introduza o timestamp na célula A1 e a fórmula =A1/86400+DATA(1970;1;1) na célula B1. No Excel em português, a função DATA tem os argumentos ano, mês e dia[19]. A fórmula divide os segundos pelo número de segundos de um dia e soma o resultado à data de 1 de janeiro de 1970.
  2. Excel: formato de data e hora na célula

    O Excel armazena datas como números de série sequenciais, e 1 de janeiro de 1900 é o número de série 1[19]. Por isso, a célula B1 mostra primeiro um número de dias com casas decimais, cerca de 45244,93. Em Formatar Células, no separador Número, escolha Personalizar e escreva o formato yyyy-mm-dd hh:mm:ss. Verá então 2023-11-14 22:13:20[20].
  3. Excel: livro com o sistema de datas 1904

    O Excel pode contar as datas a partir de 1 de janeiro de 1904, e a diferença entre os dois sistemas de datas é de 1 462 dias[21]. No sistema 1900, 1 de janeiro de 1970 tem o número 25569. No sistema 1904, o mesmo dia tem o número 24107. A função DATA devolve o número no sistema de datas do próprio livro, por isso a fórmula dá a data correta nos dois sistemas.
  4. Google Sheets: a função EPOCHTODATE

    No Google Sheets basta a fórmula =EPOCHTODATE(A1). Um timestamp em milissegundos precisa do segundo argumento 2, e um em microssegundos do argumento 3. O resultado é sempre apresentado em UTC, seja qual for o fuso horário da folha de cálculo[12].
  5. Hora de Portugal ou do Brasil na folha

    As duas fórmulas dão UTC. Para a hora legal de Portugal continental, some 1/24 no verão, porque no inverno a hora coincide com o UTC[4]. Nos Açores, subtraia 1/24 no inverno[4]. Para a hora de Brasília, subtraia 3/24[5].

Porque é que o conversor mostra uma hora diferente da do seu relógio?

Por predefinição, o conversor mostra UTC, porque é nessa escala que se conta o próprio timestamp[1]. Em Portugal continental e na Madeira, a hora legal é UTC+0 no inverno e UTC+1 no verão. Nos Açores é UTC-1 no inverno e UTC+0 no verão[4].

No Brasil, a hora de Brasília é UTC-3[5]. O horário de verão, que adiantava os relógios para UTC-2 entre outubro e fevereiro, teve a última temporada em 2018–2019[22].

Por isso, o timestamp 1700000000 dá 22:13:20 em UTC e em Lisboa, 21:13:20 nos Açores e 19:13:20 em São Paulo. O timestamp 1782864000 é a meia-noite UTC de 1 de julho de 2026. Nesse instante é 1:00 em Lisboa e são 21:00 de 30 de junho em São Paulo.

As bases de dados funcionam da mesma forma. O MySQL mostra o resultado de FROM_UNIXTIME no fuso horário da sessão[13]. O mesmo timestamp lido com a sessão em UTC e com a sessão em America/Sao_Paulo dá duas horas diferentes.

A opção Hora local do seletor Fuso horário mostra a sua hora sem contas, desde que o dispositivo tenha o fuso correto. O timestamp de uma hora concreta calcula-se no conversor de data para Unix timestamp.

Relógio digital numa secretária junto a um teclado, a mostrar 10:03
Um relógio de secretária mostra a hora local. O conversor mostra UTC por predefinição, e a opção Hora local dá a hora que um relógio como este mostra. Foto: Andrei Anufrienko, Unsplash.

Fontes

  1. Era Unix — Wikipédia
  2. The Open Group Base Specifications Issue 8 (POSIX.1-2024), 4.19 Seconds Since the Epoch — The Open Group
  3. time — PHP Manual — The PHP Group
  4. Hora Legal e Hora UTC — Instituto Português do Mar e da Atmosfera
  5. Fusos horários no Brasil — Wikipédia
  6. Date.now() — MDN Web Docs
  7. time — Time access and conversions — Python Software Foundation
  8. Unix time — Wikipédia (inglês)
  9. Year 2038 problem — Wikipédia (inglês)
  10. RFC 7519: JSON Web Token (JWT) — IETF
  11. Reference — Message Formatting — Discord Developer Documentation
  12. Função EPOCHTODATE — Editores do Google Docs Ajuda
  13. MySQL 8.4 Reference Manual, Date and Time Functions — Oracle
  14. PostgreSQL Documentation, Date/Time Functions and Operators — PostgreSQL Global Development Group
  15. PostgreSQL Documentation, Date/Time Types — PostgreSQL Global Development Group
  16. datetime — Basic date and time types — Python Software Foundation
  17. GNU Coreutils, Seconds since the Epoch — Free Software Foundation
  18. Get-Date (Microsoft.PowerShell.Utility) — Microsoft Learn
  19. Função DATA — Microsoft Support
  20. Formatar uma data da forma pretendida no Excel — Microsoft Support
  21. Sistemas de data no Excel — Microsoft Support
  22. Horário de verão no Brasil — Wikipédia

Todos os valores das tabelas foram calculados a partir das definições das unidades e verificados aritmeticamente antes da publicação. Os dados históricos e os nomes das unidades locais assentam nas fontes indicadas acima.

Última revisão do conteúdo: · escrito e verificado pela equipa Arteon

Perguntas frequentes sobre o Unix timestamp

Qual é o Unix timestamp atual?

O timestamp atual aumenta um valor por segundo. Em setembro de 2026 está entre 1788220800 e 1790812799. A expressão Math.floor(Date.now() / 1000), escrita na consola do navegador, devolve o valor exato, porque Date.now() devolve milissegundos[6].

O que significa o campo exp de um JWT?

O campo exp indica o momento a partir do qual o token não deve ser aceite. O valor é o número de segundos desde 1 de janeiro de 1970 UTC, sem contar segundos bissextos[10]. Cole-o no conversor para ver a data e a hora em que o token expira. O campo iat, o momento em que o token foi emitido, e o campo nbf, o momento antes do qual o token não deve ser aceite, usam o mesmo formato[10].

O que é o problema do ano 2038?

Um timestamp guardado como inteiro de 32 bits com sinal atinge o valor máximo a 19 de janeiro de 2038, às 03:14:07 UTC[9]. Esse valor, 2147483647, é 7FFFFFFF no conversor de decimal para hexadecimal. Um segundo depois, o contador transborda e mostra 13 de dezembro de 1901[9]. O kernel Linux suporta, desde a versão 5.6 de 2020, tempo de 64 bits também em arquiteturas de 32 bits[9].

Um Unix timestamp pode ser negativo?

Sim. Os valores negativos correspondem a instantes anteriores a 1 de janeiro de 1970[14]. O timestamp -86400 é 31 de dezembro de 1969, às 00:00:00 UTC. O conversor aceita o sinal de menos antes do número.

Como é que o tempo Unix trata os segundos bissextos?

No tempo Unix, cada dia tem exatamente 86 400 segundos[2], por isso um segundo bissexto não tem número próprio. A documentação do GNU dá um exemplo do fim de 2016. O timestamp 1483228799 é 31 de dezembro, às 23:59:59 UTC, e o timestamp 1483228800 já é a meia-noite de 1 de janeiro de 2017. O segundo 23:59:60 não pode ser escrito como timestamp[17].

Como mostro um Unix timestamp numa mensagem do Discord?

Escreva <t:1700000000> na mensagem. O Discord mostra esse instante no fuso horário e no formato de cada leitor. O estilo acrescenta-se depois de um segundo sinal de dois pontos: <t:1700000000:R> mostra o tempo relativo e <t:1700000000:F> a data completa com o dia da semana[11].

Porque é que o Python tornou utcfromtimestamp obsoleto?

O método datetime.utcfromtimestamp() está obsoleto desde o Python 3.12. Devolve um objeto sem fuso horário, e muitos métodos do módulo datetime tratam esse objeto como hora local. A documentação recomenda usar em vez dele datetime.fromtimestamp(timestamp, tz=timezone.utc)[16].

O campo aceita pontos, espaços e valores em milissegundos?

Sim. Pode separar os algarismos de três em três com pontos, espaços, sublinhados ou apóstrofos, como em 1.700.000.000. Uma única vírgula ou um único ponto separam a fração de segundo, como em 1700000000,5. O conversor reconhece sozinho milissegundos, microssegundos e nanossegundos pelo número de algarismos.

Como converto uma data de volta em Unix timestamp?

Clique em Trocar ordem. Abre-se o conversor de data para Unix timestamp, já com o resultado do campo Data e hora introduzido. Aí introduz a data como 2023-11-14 22:13:20 ou 14.11.2023 22:13.

Captura de ecrã da ferramenta gratuita da Arteon: Unix timestamp para data e hora – conversor de timestamp epoch

Ajude-nos a melhorar as nossas ferramentas

Tem uma ideia, encontrou um bug ou quer sugerir uma funcionalidade? Escreva-nos.