Munifico

munifico's anything page

Follow me on GitHub

서버에서 날짜 생성하기

서버에서 날짜를 생성할 때는 항상 UTC를 사용하거나 타임존을 명시하는 편이 좋습니다. 최근에는 클라우드 기반으로 애플리케이션을 운영하는 일이 많으므로 똑같은 코드가 전 세계 모든 곳에서 실행됩니다. 특정 지역을 기준으로 날짜를 생성한다면 골칫거리를 예약하는 것이나 다름없습니다. UTC 날짜를 사용할 수 있는 환경이라면 Date 객체의 UTC 메서드를 사용하십시오.

const d = new Date(Date.UTC(2019, 10, 10));

/*
d.toString() : Sun Nov 10 2019 09:00:00 GMT+0900 (대한민국 표준시)
d : 2019-11-10T00:00:00.000Z
*/

NOTE Date.UTC는 Date의 매개변수를 똑같이 받지만, 새 Date 인스턴스를 반환하지 않고 해당 날짜의 숫자형 값을 반환합니다. 이 숫자를 Date 생성자에 넘기면 날짜 인스턴스를 얻을 수 있습니다.

특정 타임존에 있는 서버에서 날짜를 생성할 때는 moment.tz를 써서 Date 인스턴스를 만들면 타임존을 손으로 변환할 필요가 없습니다.

// Moment.js에 넘기는 배열은 자바스크립트의 Date 생성자에 넘기는 매개변수와 똑같고,
// 월은 0으로 시작합니다.
// toDate() 메서드는 Moment.js 객체를 자바스크립트 Date 객채로 변환합니다.

const moment = require('moment-timezone');

const d = moment.tz([2019, 10, 10, 14, 40], 'America/Los_Angeles').toDate();
const s = moment.tz([2019, 10, 10, 14, 40], 'Asia/Seoul').toDate();

/*
d.toString() : Mon Nov 11 2019 07:40:00 GMT+0900 (대한민국 표준시)
s.toString() : Sun Nov 10 2019 14:40:00 GMT+0900 (대한민국 표준시)
*/

이전 : 날짜 데이터 만들기
다음 : 브라우저에서 날짜 생성하기
목차