Como converter timestamp Unix para DateTime?

Estou desenvolvendo um projeto pessoal que, entre outras coisas, envolve um bot do Telegram. E, na hora de pegar os updates desse bot, me deparei com o seguinte retorno para um campo de data: Date the message was sent in Unix time. Na hora, não dei muita atenção. Mas quando efetivamente estava desenvolvendo e encontrei com um int ENORME na resposta da request que eu fiz, fui lá procurar o que era esse tal de Unix timestamp e como convertê-lo para um DateTime.

Um pug olhando para trás com cara de "WTF"

O que é Unix Timestamp?

O Unix Timestamp é uma maneira de rastrear tempo como um total de segundos que já passaram. A contagem começa no Unix Epoch, em 1º de Janeiro de 1970, no fuso UTC. Portanto, o Unix Timestamp é somente o número de segundos que passaram entre uma data em particular e o Unix Epoch. É importante dizer que esse ponto no tempo tecnicamente não muda não importa onde você esteja no mundo. Isso é muito útil para sistemas computacionais para rastrear e ordenar informações datadas em aplicações dinâmicas e distribuídas, tanto online quanto no lado do cliente.

unixtimestamp.com (Tradução livre)

Ou seja, bastava 10 minutos de Google para eu perceber que a resolução do meu problema era simples: era só adicionar o número de segundos que eu tinha recebido na data do Unix Epoch.

Mas eu fui procurar isso no Google naquele momento? Claro que não, né. Vim procurar agora. Antes de mais nada, eu fui no Stack Overflow e achei a solução.

Uma garotinha dentro de uma caixa escrito "Box of shame"
Caixa da Vergonha

Como eu disse ali em cima, a solução é bem simples: precisamos somente criar a data do Unix Epoch dentro do nosso programa e a adicionar os segundos. E as linguagens já facilitam muito isso pra gente. Vou deixar aqui a maneira que eu fiz (em C#).

private DateTime DateTimeParser(double unixTimeStamp)
{
         //Date time in Unix
         DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
         return dateTime.AddSeconds(unixTimeStamp).ToLocalTime();
}

Duas linhas e o problema está resolvido! 😁 Espero que te ajude também e até a próxima!


📜 Posts relacionados

Um novo projeto pessoal: o Hey, Pepita bot!

Um comentário em “Como converter timestamp Unix para DateTime?”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.