CommandDialog

Конвертер эпохи

Преобразуйте Unix - временную метку (количество секунд, прошедших с 1 января 1970 года) в даты, доступные для чтения человеком, и наоборот, упрощая вычисления и сравнения, основанные на времени.

Unix-временная метка
Местная дата
RFC 3339
ISO 8601
ISO 9075
ISO 7231
Дата UTC

Что такое эпохальное время или Unix - временная метка?

Unix - временная метка, также известная как эпохальное время или POSIX - время, представляет собой систему описания момента времени в виде количества секунд, прошедших с момента Unix - эпохи (00:00:00 UTC 1 января 1970 года), исключая високосные секунды. Это универсальный стандарт представления времени в вычислительной технике, позволяющий проводить точные вычисления, сравнения и синхронизацию, основанные на времени, между различными системами и приложениями.

Unix - временные метки широко используются в базах данных, системах логирования, API и распределенных системах для отслеживания событий, планирования задач и управления операциями, чувствительными к времени. Однако Unix - время не является точным представлением UTC из - за исключения високосных секунд. Многие устаревшие системы хранят Unix - время в виде знакового 32 - битного целого числа, которое переполнится 19 января 2038 года в 03:14:08 UTC, что приведет к проблемы 2038 года.

Что произойдет 19 января 2038 года?

Проблема 2038 года (Y2038, Epochalypse или Unix Y2K) представляет собой важную проблему для систем, которые используют знаковое 32 - битное целое число для хранения Unix - времени. Эти системы не могут представить времена, наступающие после 03:14:07 UTC 19 января 2038 года, так как будет превышен максимальное значение (2 147 483 647 секунд). При инкременте временная метка переполнится, станет отрицательным числом, и системы ошибочно интерпретируют его как 13 декабря 1901 года.

Это переполнение целого числа может привести к сбоям важных систем в таких областях, как финансовые транзакции, авиация, здравоохранение и инфраструктура, где точное отслеживание времени имеет решающее значение. Чтобы смягчить последствия этой проблемы, современные системы переходят к 64 - битным целым числам, которые могут представлять время в течение миллиардов лет в будущем. Также разработчикам рекомендуется обновлять устаревшие системы и использовать надежные библиотеки для обработки времени, чтобы предотвратить сбои, связанные с Y2038.

Как получить текущее эпохальное время в различных языках программирования?

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