munifico.github.io

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 (대한민국 표준시)
*/

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