러닝 자바스크립트 스터디 자료 - CHAPTER 15. 날짜와 시간

자바스크립트의 Date객체는 원래 넷스케이프 프로그래머 캔스미스가 만들었는데, 사실 자바의 java.util.Date을 가져온 것이다. 세계는 타임존으로 나뉘어 있습니다. 타임존은 모두 UTC(Coordinated Universal Time)를 기준으로 한 시차로 나뉩니다.
UTC는 때때로 그리니치 표준시, 즉 GMT(Greenwich Mean Time)라고 불리기도 합니다.

자바스크립트에서 Date 인스턴스는 모두 유닉스 시간 원점으로 부터 몇 밀리초가 지났는지 나타내는 숫자입니다.
자바스크립트는 보통 이 숫자를 사람이 읽기 편한 그리고리력 날짜로 변환합니다. 숫자형 표현이 필요하면 valueOf() 메서드를 쓰면됩니다.

1
2
3
const d = new Date();
console.lod(d); //타임존이 들어간 그레고리력 날짜
console.log(d.valueOf()); //유닉스 타임스탬프

Date 객체 만들기

Date 객체는 네 가지 방법으로 만들 수 있습니다.

매개변수 없이 호출하면 현재 날짜에 해당하는 Date 객체를 반환
문자열을 제공하면 자바스크립트는 그 문자열을 해석해서 그에 맞는 날짜를 반환
숫자를 넣으면 유닉스 타임스탬프로 해석
타임스탬프로 입력하는 방법

Moment.js

Moment.js에는 타임존을 지원하는 버전과 지원하지 않는 버전 두 가지가 있습니다.

CDN을 통한 사용

1
<script src="//cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.4.0/moment-timezone.min.js"></script>

노드를 사용할 때는 npm install –save moment-timezone 명령으로 Moment.js를 설치하고 require 명령으로 스크립트를 불러올 수 있다.

1
const moment = reqire('moment-timezone');

날짜 형식

Moment.js 의 format 메서드를 써서 날짜를 원하는 형식으로 만들 수 있습니다.
자세한 사항은 Moment.js 온라인 문서를 참고 합시다.

날짜 구성 요소

Date 인스턴스의 각 구성 요소에 접근 할 때는 다음 메서드를 사용합니다.

1
2
3
4
5
6
7
8
9
10
const d = new Date(Date.UTC(1815, 9 ,10));

d.getFullYear()
d.getMonth()
d.getDate()
d.getDay()
d.getHours()
d.getMinutes()
d.getSeconds()
d.getMilliseconds()

날짜 비교

날짜 A와 날짜 B 중 너느쪽이 더 앞인가 하는 단순 날짜 비교는 자바스크립트에 내장된 비교 연산자를 통해 할 수 있다.
Date 인스턴스는 날짜를 숫자로 저장 하므로, 숫자에 쓸 수 있는 비교 연산자를 그대로 쓰면 된다.

1
2
3
4
const d1 = new Date(1996, 2, 1);
const d2 = new Date(2009, 4, 27);
d1 > d2 // false
d1 < d2 // true

날짜 연산

날짜는 숫자이므로 날짜에서 날짜를 빼면 몇 밀리초가 지났는지 알 수 있다.

1
const msDiff = d2 -d1;

요약

자바스크립트의 날자는 1970년 1월 1일 UTC로부터 몇 밀리초가 지났는지 나타내는 숫자입니다.
날짜를 생성할 때는 타임존이 유의 하여야 한다.
날짜 형식을 자유롭게 바꿀 수 있어야 한다면 Moment.js를 사용하면 된다.

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×