CommandDialog

Convertidor de Epoch

Convierte marcas de tiempo Unix (segundos transcurridos desde el 1 de enero de 1970) a fechas legibles por humanos y viceversa, simplificando cálculos y comparaciones basados en el tiempo.

Marca de tiempo Unix
Fecha local
RFC 3339
ISO 8601
ISO 9075
ISO 7231
Fecha UTC

¿Qué es Epoch o Unix Timestamp?

El Unix timestamp, también conocido como tiempo Epoch o tiempo POSIX, es un sistema para describir un punto en el tiempo como el número de segundos transcurridos desde la época Unix (1 de enero de 1970, 00:00:00 UTC), excluyendo los segundos intercalares. Sirve como un estándar universal para la representación del tiempo en la informática, permitiendo cálculos, comparaciones y sincronizaciones precisas basadas en el tiempo a través de sistemas y aplicaciones.

Los Unix timestamps son ampliamente utilizados en bases de datos, sistemas de registro, APIs y sistemas distribuidos para rastrear eventos, programar tareas y gestionar operaciones sensibles al tiempo. Sin embargo, el tiempo Unix no es una representación verdadera de UTC debido a su exclusión de los segundos intercalares. Muchos sistemas heredados almacenan el tiempo Unix como un entero de 32 bits con signo, el cual desbordará el 19 de enero de 2038 a las 03:14:08 UTC, llevando al problema del año 2038.

¿Qué sucede el 19 de enero de 2038?

El problema del año 2038 (Y2038, Epochalypse, o Unix Y2K) es un problema crítico para los sistemas que utilizan un entero de 32 bits con signo para almacenar el tiempo Unix. Estos sistemas no pueden representar tiempos más allá de las 03:14:07 UTC del 19 de enero de 2038, ya que se excederá el valor máximo (2,147,483,647 segundos). Cuando se incrementa, el timestamp desbordará, cambiando a un número negativo y causando que los sistemas lo interpreten incorrectamente como el 13 de diciembre de 1901.

Este desbordamiento de entero puede interrumpir sistemas críticos en áreas como transacciones financieras, aviación, atención médica e infraestructura, donde el mantenimiento preciso del tiempo es esencial. Para mitigar esto, los sistemas modernos están transitando a enteros de 64 bits, que pueden representar el tiempo durante miles de millones de años en el futuro. También se alienta a los desarrolladores a actualizar sistemas heredados y adoptar bibliotecas robustas de manejo del tiempo para prevenir fallos relacionados con Y2038.

¿Cómo obtener el tiempo Epoch actual en diferentes lenguajes de programación?

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