Guide
ISO 8601 변환기에 대한 타임스탬프(초, 밀리초, 나노초)
이 페이지가 필요한 이유
타임스탬프는 초(10자리), 밀리초(13), 마이크로초(16) 또는 나노초(19) 단위로 얻는 경우가 많습니다. 이 페이지에서는 정밀도를 추측하지 않고도 모든 시대를 ISO 8601/RFC 3339로 전환할 수 있도록 원스톱 규칙, 즉시 배송 가능한 스니펫 및 전체 변환기에 대한 CTA를 제공합니다.
빠른 시작(MVP 흐름)
- 타임스탬프를 붙여넣습니다(길이와 정밀도는 자동 감지됩니다).
- 시간대를 선택하십시오:
UTC또는 사용자 정의 오프셋(예:UTC+08:00). - ISO 8601 / RFC 3339 출력을 얻은 다음 원클릭으로 복사합니다.
- 삽입이 필요합니까? 아래의 언어 조각을 복사하세요.
대화형 도구인 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: **배치 타임스탬프 변환기**를 사용하세요.