Guide

ISO 8601 변환기에 대한 타임스탬프(초, 밀리초, 나노초)

이 페이지가 필요한 이유

타임스탬프는 초(10자리), 밀리초(13), 마이크로초(16) 또는 나노초(19) 단위로 얻는 경우가 많습니다. 이 페이지에서는 정밀도를 추측하지 않고도 모든 시대를 ISO 8601/RFC 3339로 전환할 수 있도록 원스톱 규칙, 즉시 배송 가능한 스니펫 및 전체 변환기에 대한 CTA를 제공합니다.

빠른 시작(MVP 흐름)

  1. 타임스탬프를 붙여넣습니다(길이와 정밀도는 자동 감지됩니다).
  2. 시간대를 선택하십시오: UTC 또는 사용자 정의 오프셋(예: UTC+08:00).
  3. ISO 8601 / RFC 3339 출력을 얻은 다음 원클릭으로 복사합니다.
  4. 삽입이 필요합니까? 아래의 언어 조각을 복사하세요.

대화형 도구인 Timestamp → ISO Converter 및 **Format Builder**를 사용해 보세요.

입력 규칙 및 유효성 검사

  • 길이 감지: 10=초, 13=ms, 16=μs, 19=ns.
  • 허용되는 문자: 숫자만 가능합니다. 공백과 문자를 거부합니다.
  • 범위: 플랫폼 안전 범위 내에 있어야 합니다(32비트와 64비트 확인, FAQ 참조).
  • 시간대: 기본 UTC; +08:00, -05:30과 같은 맞춤 오프셋.
  • DST: 출력은 오프셋 인식 ISO 8601을 사용합니다. UTC는 DST의 놀라움을 방지합니다.

코드 조각

자바스크립트/Node.js

const detectPrecision = (raw) => {
  const len = raw.length;
  if (len === 10) return { value: Number(raw) * 1000, unit: "ms" };
  if (len === 13) return { value: Number(raw), unit: "ms" };
  if (len === 16) return { value: Number(raw) / 1000, unit: "ms" }; // µs → ms
  if (len === 19) return { value: Number(raw) / 1_000_000, unit: "ms" }; // ns → ms
  throw new Error("Invalid length");
};

const toIso = (raw, tz = "UTC") => {
  const { value } = detectPrecision(raw);
  // If you need a fixed offset, use luxon or temporal; here we show UTC
  return new Date(value).toISOString(); // RFC 3339 compliant
};

console.log(toIso("1704067200"));      // 10 digits -> seconds
console.log(toIso("1704067200000"));   // 13 digits -> milliseconds

파이썬

from datetime import datetime, timezone, timedelta

def to_iso(raw: str, offset_minutes: int = 0) -> str:
    length = len(raw)
    if length == 10:
        ts = int(raw)
    elif length == 13:
        ts = int(raw) / 1000
    elif length == 16:
        ts = int(raw) / 1_000_000
    elif length == 19:
        ts = int(raw) / 1_000_000_000
    else:
        raise ValueError("Invalid length")

    tz = timezone(timedelta(minutes=offset_minutes))
    return datetime.fromtimestamp(ts, tz=tz).isoformat()

print(to_iso("1704067200", 0))     # UTC
print(to_iso("1704067200000", 480)) # UTC+08:00

가다

package main

import (
	"fmt"
	"time"
)

func parseEpoch(raw string) (time.Time, error) {
	switch len(raw) {
	case 10:
		sec, _ := time.ParseInt(raw, 10, 64)
		return time.Unix(sec, 0).UTC(), nil
	case 13:
		ms, _ := time.ParseInt(raw, 10, 64)
		return time.Unix(0, ms*int64(time.Millisecond)).UTC(), nil
	case 16:
		us, _ := time.ParseInt(raw, 10, 64)
		return time.Unix(0, us*int64(time.Microsecond)).UTC(), nil
	case 19:
		ns, _ := time.ParseInt(raw, 10, 64)
		return time.Unix(0, ns).UTC(), nil
	default:
		return time.Time{}, fmt.Errorf("invalid length")
	}
}

func main() {
	t, err := parseEpoch("1704067200000")
	if err != nil {
		panic(err)
	}
	fmt.Println(t.Format(time.RFC3339))
}

일반적인 함정

  • 잘못된 정밀도: 초로 처리되는 13자리 JS 타임스탬프 = 거대한 미래 날짜입니다.
  • 오프셋 누락: 시간대를 지정하지 않고 로컬 구문 분석을 수행하면 머신-로컬 시간이 생성됩니다.
  • DST 가장자리: 현지 시간을 표시해야 하는 경우 고정 오프셋이 아닌 실제 IANA 구역(예: 'America/New_York')을 선택하세요.
  • 오버플로: 32비트 시스템은 두 번째 수준 타임스탬프의 경우 2038년 이후 중단됩니다. 64비트를 선호합니다.

FAQ

  • 질문: 초와 밀리초를 어떻게 구분하나요? A: 숫자 길이를 확인하세요. 확실하지 않은 경우 둘 다 실행하고 어느 것이 그럴듯한 날짜 창에 있는지 확인하십시오.
  • 질문: ISO 8601에는 'Z'가 필요합니까? 답변: 'Z'는 UTC를 의미합니다. +08:00과 같은 오프셋은 유효한 ISO 8601/RFC 3339이기도 합니다.
  • Q: 일괄 변환이 가능한가요? A: **배치 타임스탬프 변환기**를 사용하세요.

관련 도구 및 가이드