CommandDialog

Epoch 변환기

Unix 타임스탬프(1970년 1월 1일부터 경과된 초)를 사람이 읽을 수 있는 날짜로 변환하거나 그 반대의 작업을 수행하여 시간 기반 계산 및 비교를 단순화합니다.

Unix 타임스탬프
현지 날짜
RFC 3339
ISO 8601
ISO 9075
ISO 7231
UTC 날짜

Epoch 또는 유닉스 타임스탬프란 무엇입니까?

유닉스 타임스탬프는 Epoch 시간 또는 POSIX 시간이라고도 하며, 유닉스 에포크(1970년 1월 1일 00:00:00 UTC)부터 경과한 초 수로 시간 지점을 설명하는 시스템으로 윤초는 제외됩니다. 컴퓨팅에서 시간 표현의 보편적인 표준으로 기능하며, 시스템과 애플리케이션 간에 정확한 시간 기반 계산, 비교 및 동기화를 가능하게 합니다.

유닉스 타임스탬프는 데이터베이스, 로깅 시스템, API 및 분산 시스템에서 이벤트 추적, 작업 일정 지정 및 시간에 민감한 작업 관리에 널리 사용됩니다. 그러나 유닉스 시간은 윤초를 제외하기 때문에 UTC의 정확한 표현이 아닙니다. 많은 레거시 시스템은 유닉스 시간을 부호 있는 32비트 정수로 저장하며, 2038년 1월 19일 03:14:08 UTC에 오버플로우가 발생하여 2038년 문제를 초래합니다.

2038년 1월 19일에 무슨 일이 일어나나요?

2038년 문제(Y2038, Epochalypse 또는 유닉스 Y2K)는 부호 있는 32비트 정수를 사용하여 유닉스 시간을 저장하는 시스템에 대한 치명적인 문제입니다. 이러한 시스템은 2038년 1월 19일 03:14:07 UTC 이후의 시간을 나타낼 수 없습니다. 최대값(2,147,483,647초)을 초과하면 타임스탬프가 증가하여 오버플로우가 발생하고 음수로 전환되어 시스템이 1901년 12월 13일로 잘못 해석합니다.

이러한 정수 오버플로우는 정확한 시간 기록이 필수적인 금융 거래, 항공, 의료 및 인프라와 같은 분야의 중요한 시스템을 방해할 수 있습니다. 이를 완화하기 위해 최신 시스템은 64비트 정수로 전환하고 있으며, 이를 통해 미래 수십억 년 동안의 시간을 나타낼 수 있습니다. 개발자에게는 레거시 시스템을 업데이트하고 견고한 시간 처리 라이브러리를 채택하여 2038년 관련 오류를 예방하도록 권유합니다.

다양한 프로그래밍 언어에서 현재 Epoch 시간을 가져오는 방법은?

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