timestamp랑 date()의 차이

복숭아는딱복·2024년 8월 15일

토이프로젝트 2

목록 보기
4/7
post-thumbnail

토이프로젝트 2에서 캘린더를 만들면서 파이어베이스를 사용했는데, 일반적인 자바스크립트는 Date() 객체를 쓰고, 파이어베이스는 Timestamp를 사용해서 헷갈렸다. 그래서 timestamp랑 date()의 차이를 알아보려 한다.

Timestamp와 Date() 객체는 시간을 다루는 데 사용되는 두 가지 다른 방식이다. 주요 차이점은 다음과 같다.

Timestamp

  • 정의: 특정 시점을 나타내는 정수값
  • 표현: 보통 1970년 1월 1일 00:00:00 UTC부터 경과한 밀리초를 나타낸다
  • 예시: 1692184800000 (2023년 8월 16일 12:00:00 UTC)

왜 1970년 1월 1일 일까?

1970년 1월 1일이 타임스탬프의 시작점으로 선택된 이유에는 몇 가지 역사적, 기술적 배경이 있다. 1970년 1월 1일은 UNIX 운영 체제의 개발자들이 선택한 '에포크(Epoch)' 또는 '유닉스 시간'의 시작점이다. 또한 대부분의 컴퓨터 시스템이 1970년 이후에 개발되었기 때문에, 이전 날짜는 음수로 표현할 수 있었습니다.

Date() 객체

  • 정의: JavaScript에서 날짜와 시간을 다루기 위한 내장 객체
  • 표현: 년, 월, 일, 시, 분, 초 등의 정보를 포함하는 객체
  • 예시: new Date("2023-08-16T12:00:00Z")

차이점

// 현재 시간의 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

형식

  • Timestamp: 단순한 숫자 값(정수)
  • Date(): 다양한 메서드를 가진 객체

사용 편의성

  • Timestamp: 수학적 연산이 쉽고 저장/전송에 효율적
  • Date(): 인간이 읽기 쉬운 형태로 날짜/시간 정보 제공

시간대

  • Timestamp: 항상 UTC 기준
  • Date(): 로컬 시간대 정보 포함 가능

UTC
협정 세계시(UTC, Coordinated Universal Time)로, 모든 지역에서 일관된 시간 기준을 제공하기 위해 사용된다. 이는 원자 시계와 천문학적 관측을 결합하여 유지된다.

정밀도

  • Timestamp: 밀리초 단위까지 정확
  • Date(): JavaScript에서는 밀리초까지, 그 이상은 구현에 따라 다름

밀리초
1초의 1,000분의 1에. 즉, 1밀리초는 0.001초. 이 단위는 매우 짧은 시간을 측정하는데 유용하다.

변환

  • Timestamp를 Date 객체로: new Date(timestamp)
  • Date 객체를 Timestamp로: date.getTime()

요약

특징TimestampDate
정의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와 함께 직접 사용

0개의 댓글