CommandDialog

Conversor de Epoch

Converta o timestamp Unix (segundos decorridos desde 1 de janeiro de 1970) em datas legíveis para humanos e vice - versa, simplificando cálculos e comparações baseados no tempo.

Timestamp Unix
Data local
RFC 3339
ISO 8601
ISO 9075
ISO 7231
Data UTC

O que é o Epoch ou Timestamp Unix?

O timestamp Unix, também conhecido como tempo Epoch ou tempo POSIX, é um sistema para descrever um momento no tempo como o número de segundos decorridos desde a época Unix (00:00:00 UTC, 1º de janeiro de 1970), excluindo segundos bissextos. Ele serve como um padrão universal para a representação do tempo na computação, permitindo cálculos, comparações e sincronizações precisas baseadas no tempo entre sistemas e aplicativos.

Os timestamps Unix são amplamente utilizados em bancos de dados, sistemas de registro, APIs e sistemas distribuídos para acompanhar eventos, agendar tarefas e gerenciar operações sensíveis ao tempo. No entanto, o tempo Unix não é uma representação verdadeira do UTC devido à exclusão dos segundos bissextos. Muitos sistemas legados armazenam o tempo Unix como um inteiro de 32 bits assinado, o qual irá estourar em 19 de janeiro de 2038, às 03:14:08 UTC, levando ao problema do ano 2038.

O que acontece em 19 de janeiro de 2038?

O problema do ano 2038 (Y2038, Epochalypse ou Unix Y2K) é um problema crítico para sistemas que usam um inteiro de 32 bits assinado para armazenar o tempo Unix. Esses sistemas não podem representar tempos posteriores às 03:14:07 UTC, 19 de janeiro de 2038, pois o valor máximo (2.147.483.647 segundos) será excedido. Quando incrementado, o timestamp irá estourar, se tornando um número negativo e fazendo com que os sistemas o interpretem erroneamente como 13 de dezembro de 1901.

Esse estouro de inteiro pode interromper sistemas críticos em áreas como transações financeiras, aviação, saúde e infra - estrutura, onde o registro preciso do tempo é essencial. Para mitigar isso, os sistemas modernos estão migrando para inteiros de 64 bits, os quais podem representar o tempo por bilhões de anos no futuro. Os desenvolvedores também são encorajados a atualizar os sistemas legados e adotar bibliotecas robustas de manipulação de tempo para evitar falhas relacionadas ao Y2038.

Como obter o tempo Epoch atual em diferentes linguagens de programação?

PHP

$epoch = time();

Javascript

var epoch = Math.floor(Date.now() / 1000);

Typescript

let epoch: number = Math.floor(Date.now() / 1000);

C++

#include <chrono>
auto epoch = std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now().time_since_epoch()).count();

Java

long epoch = System.currentTimeMillis() / 1000;

Rust

use std::time::{SystemTime, UNIX_EPOCH};
let epoch = SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs();

Go

import "time"
epoch := time.Now().Unix()

Swift

import Foundation
let epoch = Int(Date().timeIntervalSince1970)

Bash Shell

epoch=$(date +%s)

C#

long epoch = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

MySQL

SELECT UNIX_TIMESTAMP(NOW());

MATLAB

epoch = posixtime(datetime('now'));

VBA

Dim epoch As Long
epoch = DateDiff("s", "1/1/1970", Now())