15.5.1 서버에서 날짜 생성하기
서버에서 날짜를 생성할 때는 항상 UTC를 사용하거나 타임존을 명시하는 편이 좋습니다.
최근에는 클라우드 기반으로 애플리케이션을 운영하는 일이 많으므로 똑같은 코드가 전 세계 모든 곳에서 실행됩니다.
특정 지역을 기준으로 날짜를 생성한다면 골칫거리를 예약하는 것이나 다름없습니다.
UTC 날짜
를 사용할 수 있는 환경이라면 Date 객체의 UTC 메서드를 사용하십시오.
const d = new Date(Date.UTC(2016, 4, 27)); // May 27, 2016 UTC
NOTE_
Date.UTC는 Date의 매개변수를 똑같이 받지만, 새 Date 인스턴스를 반환하지 않고 해당 날짜의 숫자형 값을 반환합니다.
이 숫자를 Date 생성자에 넘기면 날짜 인스턴스를 얻을 수 있습니다.
특정 타임존
에 있는 서버에서 날짜를 생성할 때는 moment.tz
를 써서 Date 인스턴스를 만들면 타임존을 손으로 변환할 필요가 없습니다.
// Moment.js에 넘기는 배열은 자바스크립트의 Date 생성자에 넘기는 매개변수와 똑같고,
// 월은 0으로 시작합니다.
// toDate() 메서드는 Moment.js 객체를 자바스크립트 Date 객체로 변환합니다.
const d = moment.tz([2016, 3, 27, 9, 19], 'America/Los_Angeles').toDate();
const s = moment.tz([2016, 3, 27, 9, 19], 'Asia/Seoul').toDate();