Unix Epoch 시간 변환기 및 Discord 타임스탬프 생성기

Unix epoch 타임스탬프를 사람이 읽을 수 있는 날짜로 변환하거나 그 반대로 변환합니다. 복사하여 붙여넣을 수 있는 Discord 타임스탬프를 실시간으로 생성하세요.

실시간 Unix 에포크 시간
0000000000
밀리초 0000000000000
로컬 시간
-
UTC 시간
-
Unix Epoch (sec)
-
Unix Epoch (ms)
-
상대 시간
-
다중 시간대 타임라인 비교 Slide this handle to synchronize and visually compare the local and UTC dates and times across all selected timezones in real time.

슬라이더를 움직여 여러 시간대의 시간을 시각적으로 비교해보세요.

-12h -6h UTC (0) +6h +12h

                                
                            

분산 데이터베이스 시스템 동기화, 애플리케이션 이벤트 로깅, API 페이로드 디버깅에는 시간을 추적하는 매우 정확하고 표준화된 방법이 필요합니다. Unix epoch 시간을 표준화하면 1970년 1월 1일 이후 경과된 정확한 시간(초)을 나타내는 불변의 시간대 독립적인 정수가 제공됩니다. 이 종합 가이드에서는 Unix 타임스탬프의 메커니즘을 자세히 설명하고 현대 환경에서 프로그래밍 방식으로 변환하는 방법을 보여주며 Discord 눈송이 ID와 같은 대체 시간 구조를 구문 분석하는 방법을 설명합니다.

Unix 에포크 시간 및 타임스탬프 역학 이해

Unix 시간(Unix epoch, POSIX 시간 또는 Unix 타임스탬프라고도 함)은 증가하는 정수로 시간순 진행 상황을 추적합니다. 1970년 1월 1일, 00:00:00 UTC(ISO 8601 표현: 1970-01-01T00:00:00Z) 기준점 이후 경과된 초 수를 나타냅니다. 이 시대의 정확한 순간에 카운터는 정확히 0에 있었습니다.

Epoch 타임스탬프는 엄격하게 시간대에 독립적입니다. 정수는 전 세계의 단일 보편적 순간을 나타내며 로컬 클라이언트 애플리케이션은 특정 UTC 오프셋을 적용하여 프레젠테이션 계층을 조정합니다. 시간대 매핑이 작동하는 방식을 보려면 타임스탬프 1577923200의 로컬 해석을 비교하세요.

시간대 지역 현지화된 날짜 및 시간 오프셋 값
GMT / UTC 2020년 1월 2일 목요일 00:00:00 UTC+00:00
인도(콜카타) 2020년 1월 2일 목요일 05:30:00 UTC+05:30
미국(뉴욕) 2020년 1월 1일 수요일 19:00:00 UTC-05:00

Unix 시간은 윤초를 고려하지 않습니다. 대신 각 달력일이 정확히 86,400초를 포함한다고 가정합니다. 윤초는 카운터에서 무시되기 때문에(이전 초와 정확히 동일한 타임스탬프 값 공유) Unix epoch 시간은 긴 지리적 범위에 걸쳐 UTC(협정 세계시)와 완벽한 선형 동기화를 유지하지 않습니다. 1970년 1월 1일 시작 임계값 이전 날짜의 경우 시스템은 음의 정수 값을 사용합니다(예: -86400은 1969년 12월 31일, 00:00:00 UTC를 나타냅니다).

데이터베이스 모델링이나 백그라운드 작업자 작업에서 이러한 숫자를 사용하기 위해 개발자는 고정된 시간 간격을 사용합니다. 다음 목록은 표준 단위를 초 단위의 정확한 값으로 매핑합니다.

  • 1시간: 3,600초
  • 1일: 86,400초
  • 1주: 604,800초
  • 1개월(30.44일로 계산): 2,629,743초
  • 1년(365.24일로 계산): 31,556,926초

이러한 값을 사용하여 기간 값을 직접 계산하면 cron 일정 처리, JWT 토큰 만료 또는 NoSQL 데이터베이스에서 사용자 지정 TTL 인덱스 구축이 쉬워집니다.

초 대 밀리초: 숫자 정밀도 탐색

최신 소프트웨어의 타임스탬프는 애플리케이션 요구 사항에 따라 다양한 수준의 정밀도로 실행됩니다. 대부분의 시스템 설계는 다음 네 가지 해상도 중 하나를 활용합니다.

  1. 초(10자리 형식): 예: 1735689600. 이는 Python, PHP, 관계형 데이터베이스(예: PostgreSQL 및 MySQL) 및 Linux 셸 환경에서 사용되는 표준 해상도입니다.
  2. 밀리초(13자리 형식): 예: 1735689600000. 이 형식은 JavaScript, Java 및 대부분의 최신 JSON 기반 웹 API의 표준입니다.
  3. 마이크로초(16자리 형식): 예: 1735689600000000. 일반적으로 고정밀 추적, 시스템 로깅 및 하위 수준 진단 플랫폼용으로 예약되어 있습니다.
  4. 나노초(19자리 형식): 특수 커널 수준 추적 시스템 및 실시간 처리 네트워크에서 활용됩니다.

초를 밀리초로 변환하려면 정수 값에 1,000을 곱하세요. 반대로, 밀리초를 표준 초로 다시 변환하려면 정수 나누기를 1,000으로 적용하여 후행 숫자를 제거합니다.

랜드마크 및 순차 Unix 타임스탬프를 이해하면 연대순 진행 및 규모에 대한 명확한 관점을 얻을 수 있습니다.

유닉스 타임스탬프 해당 UTC 날짜 및 시간 마일스톤 컨텍스트
0 1970년 1월 1일 목요일, 00:00:00 UTC 유닉스 시대
1,000,000,000 2001년 9월 9일 일요일, 01:46:40 UTC 10억 번째 이정표
1,234,567,890 2009년 2월 13일 금요일, 23:31:30 UTC 순차적 십진수 진행
1,735,689,600 2025년 1월 1일 수요일, 00:00:00 UTC 2025년의 시작
2,000,000,000 2033년 5월 18일 화요일, 03:33:20 UTC 20억 번째 두 번째 이정표
2,147,483,647 2038년 1월 19일 화요일, 03:14:07 UTC 절대 최대 부호 있는 32비트 제한

2038년 문제: 32비트 시스템이 실패하는 이유

Unix 타임스탬프를 부호 있는 32비트 정수로 저장하는 레거시 시스템, 임베디드 펌웨어 및 데이터베이스 스키마는 결국 오버플로 제한에 직면하게 됩니다. 부호 있는 32비트 정수는 최대 2,147,483,647의 값만 저장할 수 있습니다. 정확한 중단점은 2038년 1월 19일 03:14:07 UTC에 발생합니다.

시스템 시계의 다음 틱(03:14:08 UTC)에서 정수 카운터가 오버플로되어 최소 음수 제한인 -2,147,483,648까지 래핑됩니다. 이 전환을 처리하지 못하는 시스템은 날짜를 1901년 12월 13일로 해석합니다. 이로 인해 시스템 충돌, 인증서 무효화, 파일 시스템 오류 및 손상된 데이터베이스 쿼리가 발생합니다.

Unix 타임스탬프를 변환하고 생성하는 프로그래밍 방식의 방법

개발자가 현재 시간을 캡처하고 변환을 수행하는 데 도움이 되도록 아래 표에는 표준 에포크 타임스탬프를 검색하고 일반 값(1800000000을 참조로 사용)을 다양한 언어 및 플랫폼에서 다시 현지 시간으로 변환하는 방법이 간략하게 설명되어 있습니다.

언어/플랫폼 현재 에포크(초) Epoch를 날짜로 변환
자바스크립트 Math.floor(Date.now() / 1000) 새로운 날짜(1800000000 * 1000).toLocaleString()
파이썬 정수(시간.시간()) 시간.ctime(1800000000)
자바 Instant.now().getEpochSecond() new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new Date(1800000000L * 1000))
가다 시간.지금().유닉스() 시간.유닉스(1800000000, 0)
PHP 시간() 날짜('r', 1800000000)
루비 Time.now.to_i 시간.at(1800000000)
기음# DateTimeOffset.Now.ToUnixTimeSeconds() DateTimeOffset.FromUnixTimeSeconds(1800000000).LocalDateTime
C++ 지속 시간<초>(system_clock::now().time_since_epoch()).count()
SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs()
시간 스칼라 현지 시간(1800000000)
포스트그레SQL SELECT EXTRACT(지금부터 EPOCH()); 선택 TO_TIMESTAMP(1800000000);
MySQL SELECT UNIX_TIMESTAMP(NOW()); SELECT FROM_UNIXTIME(1800000000);
SQL 서버 SELECT DATEDIFF(두 번째, '1970-01-01', GETUTCDATE()); SELECT DATEADD(두 번째, 1800000000, '1970-01-01');
SQLite SELECT 유닉스에포크(); SELECT 날짜시간(1800000000, 'unixepoch');
유닉스/리눅스 쉘 날짜 +%s 날짜 -ud @1800000000
macOS 날짜 +%s 날짜 -j -r 1800000000
파워셸 [DateTimeOffset]::Now.ToUnixTimeSeconds() [DateTimeOffset]::FromUnixTimeSeconds(1800000000).LocalDateTime
엑셀/시트 =(A1 / 86400) + 25569

맞춤형 시대 및 Discord 눈송이 타임스탬프 생성기

다양한 아키텍처는 하드웨어 플랫폼, 데이터베이스 또는 애플리케이션 사양에 따라 특수한 참조 에포크와 증분 해상도를 사용합니다. 이러한 형식 중 일부는 다음과 같습니다.

  • LDAP 타임스탬프: 1601년 1월 1일부터 100나노초 블록 단위로 계산됩니다.
  • .NET DateTime Ticks: 그레고리력 1년부터 시작하여 100나노초 블록 단위로 계산됩니다.
  • Chrome/WebKit 타임스탬프: 1601년 1월 1일부터 마이크로초 단위로 계산됩니다.
  • Mac HFS+: 1904년 1월 1일부터 초 단위로 계산됩니다.
  • NTP 타임스탬프: 1900년 1월 1일부터 초 단위로 계산됩니다.
  • GPS 시간: 1980년 1월 6일부터 초 및 주 단위로 계산됩니다.
  • SAS 타임스탬프: 1960년 1월 1일부터 시작하여 초 또는 일 단위로 계산됩니다.
  • 코코아 핵심 데이터: 2001년 1월 1일부터 초 단위로 계산됩니다.
  • Excel OADate: 1900년 1월 1일부터 소수 일수로 계산됩니다.
  • FAT 타임스탬프: 1980년 또는 2000년부터 초 단위로 계산됩니다.
  • 율리우스력 기념일: 고대 천문 기준점에서 날짜순으로 진행되는 날짜를 측정합니다.
  • Snowflake ID: Discord와 Twitter(X)에서 사용하는 분산형 타임스탬프 인덱싱 형식입니다.

Discord 타임스탬프 및 눈송이 ID 이해

Discord는 고유한 분산형 64비트 부호 없는 정수(눈송이 ID)를 생성하여 메시지, 채널, 서버 및 사용자와 같은 개체를 식별합니다. 표준 증분 정수 또는 오버헤드가 높은 UUID와 달리 Discord 눈송이는 ID 자체 내에 정확한 생성 시간을 포함하므로 분산 시스템의 성능에 도움이 됩니다.

Discord 눈송이 ID의 구조는 네 가지 개별 구성 요소로 나뉩니다.

  • 타임스탬프(42비트): 사용자 정의 Discord 시대(2015년 1월 1일 00:00:00 UTC로 설정, Unix 타임스탬프 1420070400000에 해당) 이후 경과된 밀리초를 나타냅니다.
  • 작업자 ID(5비트): 내부 서버 작업자 인덱스를 나타냅니다.
  • 프로세스 ID(5비트): 내부 프로세스 인덱스를 나타냅니다.
  • 증분(12비트): 프로세스당 밀리초마다 0으로 재설정되는 순차 카운터입니다.

보는 사용자의 현지 시간대로 자동으로 조정되는 Discord 메시지에 읽을 수 있는 날짜를 표시하기 위해 개발자는 Discord 타임스탬프 생성기를 사용합니다. 표준 Unix 타임스탬프를 이러한 생성기에 입력하면 형식화된 마크다운 문자열이 생성됩니다. 아래 표에는 사용 가능한 스타일 지정 형식이 나열되어 있습니다.

마크다운 구문 출력 예(Unix 1735689600의 경우) 표시 스타일 설명
<t:1735689600:t> 00:00 짧은 시간
<t:1735689600:T> 00:00:00 장기
<t:1735689600:d> 2025년 1월 1일 짧은 데이트
<t:1735689600:D> 2025년 1월 1일 긴 날짜
<t:1735689600:f> 2025년 1월 1일 00:00 짧은 날짜/시간
<t:1735689600:F> 2025년 1월 1일 수요일 00:00 자세한 날짜/시간
<t:1735689600:R> 5년 안에 / 5년 전 상대 시간

분산 시스템의 시간 워크플로 최적화

최신 분산 시스템 내에서 시간 계산을 관리하려면 시간대 드리프트, 페이로드 크기 조정 버그 및 오버플로 충돌을 방지하기 위한 표준화된 접근 방식이 필요합니다. 표준 Unix epoch에서 데이터베이스 구조를 표준화하면 시간 조작 작업이 단순화되어 마이크로서비스와 외부 인터페이스 전반에 걸쳐 일관된 작업이 보장됩니다.

API를 설계하거나 메시지 대기열을 구성할 때 다음 세 가지 지침을 염두에 두십시오.

  1. UTC 또는 에포크 정수 형식으로 시간 저장: 지속성 레이어를 현지 시간대 오프셋 없이 깨끗하게 유지합니다. 프레젠테이션 계층에만 지역화를 적용합니다.
  2. 64비트 표현 우선순위 지정: 데이터베이스 열을 디자인하거나 프로그래밍 구조를 선택할 때 2038년 런타임 오버플로를 방지하기 위해 32비트 유형에서 마이그레이션하세요.
  3. 적절한 정밀도 선택: 시스템 사양을 일치시킵니다(예: API 이벤트에 밀리초를 사용하고 분산 잠금 획득을 추적할 때만 나노초를 사용).

브라우저 유틸리티를 사용하여 타임스탬프를 변환하거나 시대를 확인할 때 보안과 개인 정보 보호가 가장 중요합니다. Toolsaur의 변환 도구는 "모든 처리는 귀하의 브라우저에서 로컬로 실행됩니다. 귀하의 데이터는 우리 서버로 전송되지 않습니다."라는 철학을 직접적으로 구현합니다. 이는 데이터베이스 타임스탬프가 포함된 민감한 시스템 로그가 제3자 엔드포인트로 유출되지 않도록 보장합니다.

에포크 변환기에 대해 자주 묻는 질문

Unix 타임스탬프가 시간대에 독립적인 이유는 무엇입니까?

Unix 타임스탬프는 단일 전역 참조 지점(1970년 1월 1일 00:00:00 UTC) 이후 절대 경과 시간을 나타냅니다. 이 참조 시작점은 지리적 위치에 관계없이 동일하므로 계산된 타임스탬프 정수는 동일하게 유지됩니다. 현지 시간대 조정은 타임스탬프를 클라이언트 인터페이스 내에서 사람이 읽을 수 있는 날짜 문자열로 형식화하는 경우에만 적용됩니다.

10자리 타임스탬프와 13자리 타임스탬프의 차이점은 무엇입니까?

10자리 타임스탬프는 POSIX 운영 체제, Python 및 SQL 데이터베이스에서 일반적으로 사용되는 정밀도(초)(예: 1735689600)를 나타냅니다. 13자리 타임스탬프는 JavaScript 런타임, Java 및 최신 REST API의 표준인 밀리초 단위의 정밀도(예: 1735689600000)를 나타냅니다. 그 사이를 이동하려면 1,000을 곱하거나 나누어야 합니다.

2038년 문제는 현대 데이터베이스에 어떤 영향을 미칠까요?

데이터베이스 열이 부호 있는 32비트 정수 데이터 유형(예: 이전 데이터베이스 스키마의 INT)을 사용하여 Unix 타임스탬프를 저장하는 경우 2038년 1월 19일, 03:14:07 UTC 이후의 타임스탬프가 있는 레코드는 오버플로를 발생시킵니다. 이는 숫자를 음수 값으로 래핑하여 미래 날짜를 1901년 12월 13일로 해석합니다. 시스템은 이러한 열을 부호 있는 64비트 정수(BIGINT)로 마이그레이션해야 합니다.

Unix 시간은 윤초를 어떻게 처리합니까?

Unix 시간은 윤초를 고려하지 않으며 하루가 정확히 86,400초로 가정됩니다. 윤초가 발생하면 Unix 타임스탬프가 1초 동안 반복되거나 중지됩니다. 이 디자인 선택은 계산 수학을 단순화하지만 정확한 UTC(협정 세계시) 타임라인에서 사소한 드리프트를 발생시킵니다.

Discord 눈송이 ID는 무엇이며 표준 Unix 타임스탬프와 어떻게 다릅니까?

Discord 눈송이 ID는 서버 아키텍처 메타데이터(작업자 ID, 프로세스 ID 및 로컬 증분)와 함께 생성 타임스탬프를 인코딩하는 사용자 정의 64비트 부호 없는 정수입니다. 초 단위의 표준 10자리 Unix 타임스탬프와 달리 눈송이 ID는 2015년 1월 1일에 시작하는 사용자 지정 에포크를 사용하고 밀리초 단위로 간격을 추적하여 이 고정밀 시간을 ID의 처음 42비트에 저장합니다.

Microsoft Excel에서 에포크 타임스탬프를 어떻게 변환할 수 있나요?

Excel은 1900년 1월 1일 이후 경과된 일 수로 날짜를 추적합니다. A1 셀의 표준 10자리 Unix 타임스탬프(초)를 Excel에서 읽을 수 있는 날짜로 변환하려면 수식 =(A1 / 86400) + 25569을 적용합니다. 여기서 86400는 하루의 초 수이고 25569은 Excel의 시대와 Unix 시대 사이의 일 수 오프셋입니다. 출력을 보려면 셀 형식을 "날짜" 또는 "시간"으로 설정하세요.