CommandDialog

Convertitore Epoch

Converti il timestamp Unix (secondi trascorsi dal 1 gennaio 1970) in date leggibili per l'essere umano e viceversa, semplificando i calcoli e le comparazioni basati sul tempo.

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

Cos’è l’Epoch o il timestamp Unix?

Il timestamp Unix, noto anche come tempo Epoch o tempo POSIX, è un sistema per descrivere un istante nel tempo come il numero di secondi trascorsi dall’epoca Unix (00:00:00 UTC il 1° gennaio 1970), esclusi i secondi bisestili. Funge da standard universale per la rappresentazione del tempo in informatica, consentendo calcoli, confronti e sincronizzazioni precise basati sul tempo tra sistemi e applicazioni.

I timestamp Unix sono ampiamente utilizzati nei database, nei sistemi di logging, nelle API e nei sistemi distribuiti per tracciare eventi, pianificare attività e gestire operazioni sensibili al tempo. Tuttavia, il tempo Unix non è una rappresentazione vera e propria dell’UTC a causa dell’esclusione dei secondi bisestili. Molti sistemi legacy memorizzano il tempo Unix come un intero a 32 bit firmato, il quale andrà in overflow il 19 gennaio 2038 alle 03:14:08 UTC, dando origine al problema del 2038.

Cosa succede il 19 gennaio 2038?

Il problema del 2038 (Y2038, Epochalypse o Unix Y2K) è un problema critico per i sistemi che utilizzano un intero a 32 bit firmato per memorizzare il tempo Unix. Questi sistemi non possono rappresentare istanti successivi alle 03:14:07 UTC del 19 gennaio 2038, poiché verrà superato il valore massimo (2.147.483.647 secondi). Quando viene incrementato, il timestamp andrà in overflow, diventando un numero negativo e facendo sì che i sistemi lo interpretino erroneamente come il 13 dicembre 1901.

Questo overflow di interi può interrompere i sistemi critici in aree come le transazioni finanziarie, l’aviazione, la sanità e l’infrastruttura, dove la misurazione precisa del tempo è essenziale. Per mitigare questo problema, i sistemi moderni stanno passando agli interi a 64 bit, che possono rappresentare il tempo per miliardi di anni nel futuro. È anche incoraggiato ai sviluppatori di aggiornare i sistemi legacy e adottare librerie solide per la gestione del tempo per prevenire i guasti legati al Y2038.

Come ottenere l’istante di tempo Epoch corrente in diversi linguaggi di programmazione?

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())