토이프로젝트 2에서 캘린더를 만들면서 파이어베이스를 사용했는데, 일반적인 자바스크립트는 Date() 객체를 쓰고, 파이어베이스는 Timestamp를 사용해서 헷갈렸다. 그래서 timestamp랑 date()의 차이를 알아보려 한다.
Timestamp와 Date() 객체는 시간을 다루는 데 사용되는 두 가지 다른 방식이다. 주요 차이점은 다음과 같다.
1970년 1월 1일이 타임스탬프의 시작점으로 선택된 이유에는 몇 가지 역사적, 기술적 배경이 있다. 1970년 1월 1일은 UNIX 운영 체제의 개발자들이 선택한 '에포크(Epoch)' 또는 '유닉스 시간'의 시작점이다. 또한 대부분의 컴퓨터 시스템이 1970년 이후에 개발되었기 때문에, 이전 날짜는 음수로 표현할 수 있었습니다.
// 현재 시간의 Timestamp
const currentTimestamp = Date.now();
console.log(currentTimestamp); // 예: 1692184800000
// 현재 시간의 Date 객체
const currentDate = new Date();
console.log(currentDate); // 예: Wed Aug 16 2023 12:00:00 GMT+0000 (Coordinated Universal Time)
// Timestamp를 Date 객체로 변환
const dateFromTimestamp = new Date(currentTimestamp);
console.log(dateFromTimestamp); // Wed Aug 16 2023 12:00:00 GMT+0000 (Coordinated Universal Time)
// Date 객체를 Timestamp로 변환
const timestampFromDate = currentDate.getTime();
console.log(timestampFromDate); // 1692184800000
UTC
협정 세계시(UTC, Coordinated Universal Time)로, 모든 지역에서 일관된 시간 기준을 제공하기 위해 사용된다. 이는 원자 시계와 천문학적 관측을 결합하여 유지된다.
밀리초
1초의 1,000분의 1에. 즉, 1밀리초는 0.001초. 이 단위는 매우 짧은 시간을 측정하는데 유용하다.
| 특징 | Timestamp | Date |
|---|---|---|
| 정의 | Firebase Firestore에서 제공하는 날짜와 시간을 표현하는 데이터 형식 | JavaScript에서 날짜와 시간을 표현하는 기본 객체 |
| 형식 | Firebase Firestore에서 Timestamp 객체로 관리 | JavaScript의 내장 Date 객체로 관리 |
| 생성 | Timestamp.now() 또는 Timestamp.fromDate(date) 사용 | new Date() 사용 |
| 용도 | Firestore에서 날짜와 시간 데이터를 저장하고 조회하는 데 사용 | 일반적인 날짜와 시간 계산 및 조작 |
| 정밀도 | 밀리초 단위로 정밀하게 시간 정보를 저장 | 밀리초 단위로 정밀하게 시간 정보를 저장 |
| 변환 방법 | timestamp.toDate()를 사용하여 Date 객체로 변환 | date.getTime()을 사용하여 Unix epoch 시간으로 변환 |
| 시간대 | UTC 시간대 사용 | 로컬 시간대 및 UTC 시간대 지원 |
| 포맷팅 | 기본적으로 포맷팅 함수 없음, toDate() 후 Date 객체의 메서드 사용 | toLocaleDateString(), toISOString() 등 다양한 메서드 제공 |
| Firestore와의 통합 | Firestore에 날짜와 시간을 저장하고 조회할 때 주로 사용 | Firestore의 Timestamp로 변환하거나 Firestore와 함께 직접 사용 |