Core Data Timestamp

Core Data → Unix 타임스탬프 변환기

Core Data을(를) Unix 시간으로 변환합니다. 정확한 공식과 큰 값 지원. 출력: 초, 밀리초, ISO 8601, 가독 형식.

2001-01-01 UTC 이후의 초

현재 시간 — Core Data 타임스탬프
Unix 타임스탬프(초)

Core Data 타임스탬프란?

Apple의 Core Data 프레임워크는 Date 속성을 2001년 1월 1일 00:00:00 UTC 이후의 초 수로 저장합니다 — macOS와 iOS 전반에서 쓰이는 것과 동일한 CFAbsoluteTime 기준일입니다. Core Data 저장소를 SQLite에서 직접 열면 날짜 열(흔히 Z…DATE라는 이름)이 이러한 2001 기준 부동소수점 값으로 나타납니다.

  • epoch: 2001-01-01 00:00:00 UTC
  • 유형: 부동소수점 초(초 미만 정밀도 보존)
  • 나타나는 곳: Core Data SQLite 저장소, ZDATE / Z_…_DATE 열, 내보낸 .sqlite 데이터베이스
  • NSDate timeIntervalSinceReferenceDate와 동일한 기준일

Core Data 타임스탬프를 Unix 시간으로 변환하는 법

1970년과 2001년 사이의 978,307,200초 차이를 더해 Core Data 값을 Unix epoch로 다시 맞춥니다.

  • Unix seconds = CoreDataTimestamp + 978307200
  • 예: 721692800 → 1700000000 → 2023-11-14 22:13:20 UTC
  • SQLite: datetime(ZDATE + 978307200, "unixepoch")
  • 역방향: CoreDataTimestamp = Unix seconds − 978307200

Core Data SQLite 저장소 조회하기

Core Data 데이터베이스를 직접 읽는 일은 포렌식과 디버깅에서 흔합니다. 값이 2001 기준이라, 오프셋을 잊으면 모든 날짜가 약 31년 과거로 이동합니다. 음수 값도 유효하며 2001년 이전 날짜를 나타냅니다.

  • 열 이름은 보통 Z로 시작함(Core Data의 내부 명명)
  • 값 0은 2001-01-01을 의미하며, 기본값/미설정 날짜로 자주 사용됨
  • 시각은 UTC로 저장됨; 표시 시간대는 그 뒤에 적용

관련 타임스탬프 형식 변환기

Core Data SQLite 직접 읽기

프레임워크 없이 Core Data .sqlite 저장소를 살펴볼 때:

  • 엔터티 테이블은 Z로 시작함(예: ZUSER); 날짜 속성 열에는 ZDATE 스타일의 접두사가 추가로 붙음
  • ZDATE 값은 부동소수점 CFAbsoluteTime — 978307200을 더하면 Unix 타임스탬프가 됨
  • ZDATE 열의 NULL 또는 0.0은 날짜가 설정되지 않았음(또는 기준일 자체로 설정됨)을 의미
  • Z_PRIMARYKEY 테이블은 엔터티 ID를 행 ID에 매핑하지만 날짜는 포함하지 않음
  • 쿼리 가독성을 위해: SQLite에서 datetime(ZDATE + 978307200, "unixepoch")

FAQ

Core Data는 어떤 epoch를 쓰나?
Core Data는 날짜를 2001년 1월 1일 00:00:00 UTC 이후의 초로 저장합니다. 이는 CFAbsoluteTime/NSDate와 같은 기준일입니다.
Core Data의 ZDATE를 실제 날짜로 변환하려면?
값에 978,307,200을 더해 Unix 타임스탬프를 얻은 뒤 형식화하세요 — 예: SQLite datetime(ZDATE + 978307200, "unixepoch").
왜 내 Core Data 날짜가 31년 어긋나나?
아마 2001년 기준 값을 Unix 타임스탬프로 취급했기 때문입니다. 978,307,200초 오프셋을 더해 보정하세요.