<aside> 💡 자바스크립트에서 Date 객체는 유닉스 타임스탬프를 사용한다.
</aside>
https://bit.ly/LiveReMobile (바닐라 JS로 직접 구현)
SNS을 보면 “1분 전 게시", “방금 전 게시" 같은 경과일로 포스팅 날짜를 표시하는 것을 자주볼 수 있다. 경과일은 Date 객체의 getTime()
메서드를 이용해 변환한 밀리초와 현재 시간의 밀리초 차이를 계산하는 방법으로 구현할 수 있다.
getTime()
메서드는 1970년 1월 1일 0시 0 분 0초(UTC)부터 현재까지의 시간을 밀리초 단위로 환산한 값을 반환한다. 이를 유닉스 시간(유닉스 타임스탬프)으로 부른다. 1000밀리초(millisecond)는 1초(second)다.
const date = new Date();
console.log(date) // Tue Jun 15 2021 15:26:07 GMT+0900 (대한민국 표준시)
date.getTime(); // 1623738367301
getTime()
으로 가져온 밀리초 시간을 유닉스 시간 계산기로 확인해보면 동일한 것을 알 수 있다.
new Date(1623738367301) // Tue Jun 15 2021 15:26:07 GMT+0900 (대한민국 표준시)
<aside> 💡 UTC는 1972년 1월 1일부터 시행된 국제 표준시다. UTC는 GMT(그리니치 평균시)에 기반해서 GMT로도 불린다. GMT는 영국 런던을 기점으로, 뉴질랜드 웰링턴을 종점으로 설정한 협정 세계시의 기준시간대다. ex) 런던 GMT+0, 서울 GMT+9
</aside>
Date 객체의 toJSON()
toISOString()
메서드를 이용해 YYYY-MM-DDTHH:mm:ss.sssZ
포맷의 ISO 8601 날짜를 출력할 수 있다. ISO 8601은 국제표준화기구에서 지정한 날짜/시간에 대한 표준 규격이다. 날짜 가장 뒤에 붙는 Z
는 UTC 시간대를 나타낸다(09:30 UTC
→ 0930Z
)
new Date().toJSON() // '2021-06-18T06:48:16.046Z'
new Date().toISOString() // '2021-06-18T06:48:16.046Z'
new Date('2021-06-18T06:48:16.046Z') // Fri Jun 18 2021 15:48:16 GMT+0900 (한국 표준시)