Home JavaScript에서 Date와 Intl로 날짜, 시간 다루기
Post
Cancel

JavaScript에서 Date와 Intl로 날짜, 시간 다루기

Date와 Intl을 사용해 날짜와 시간 데이터를 다루는 방법에 대해 알아보겠습니다. 또한, Intl로 날짜와 시간만이 아닌 다른 것도 다뤄보겠습니다.

Date

Date 객체는 1970년 1월 1일 UTC 자정과의 시간 차이를 밀리초로 나타내는 정수 값을 담습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const date = new Date();
new Date(); // 2023-08-07T22:02:01.114Z
date.getFullYear(); // 2023
date.getMonth(); // 7 (0~11)
date.getDate(); // 8 (1~31)
date.getHours(); // 7
date.getMinutes(); // 2
date.getSeconds(); // 1
date.getDay(); // 2 (0~6)
date.getTime(); // 1691445721119

// new Date().getTime()과 거의 동일하지만, 함수로 호출하기 때문에 Date 객체를 새롭게 만들지 않아 더 빠르고 가비지 컬렉터의 일을 줄여줌
Date.now(); // 1691445721119
Date.parse("2023-08-07T07:36:41"); // 1691361401000

date.toISOString(); // 2023-08-07T22:20:39.218Z
date.toJSON(); // 2023-08-07T22:21:32.422Z

date.toLocaleString("ko"); // 2023. 8. 8. 오전 7:12:08
date.toLocaleString("en"); // 8/8/2023, 7:12:43 AM
date.toLocaleDateString("ko"); // 2023. 8. 8.
date.toLocaleString("ko", { year: "2-digit", month: "2-digit" }); // 23. 8.

Intl

Intl 객체는 각 언어에 맞는 문자비교, 숫자, 시간, 날짜비교를 제공하는 API입니다.

  • Intl.DateTimeFormat: 각 언어에 맞는 시간과 날짜 서식을 적용할 수 있는 객체의 생성자입니다.
  • Intl.ListFormat: 각 언어에 맞는 목록 서식을 적용할 수 있는 객체의 생성자입니다.
  • Intl.NumberFormat: 각 언어에 맞는 숫자 서식을 적용할 수 있는 객체의 생성자입니다.
  • Intl.PluralRules: 각 언어에 맞는 복수형 규칙 및 단수 복수 구분 서식을 적용할 수 있는 객체의 생성자입니다.
  • Intl.RelativeTimeFormat: 각 언어에 맞는 상대 시간 서식을 적용할 수 있는 객체의 생성자입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// DateTimeFormat
const intl = new Intl.DateTimeFormat("ko");
intl.format(new Date()); // 2023. 8. 8.
Intl.DateTimeFormat("ko", {
  year: "2-digit",
  month: "2-digit",
  day: "2-digit",
  hour: "2-digit",
  hourCycle: "h24",
  minute: "2-digit",
  second: "2-digit"
}).format(new Date()); // 23. 08. 08.

// RelativeTimeFormat
new Intl.RelativeTimeFormat().format(-1, "day"); // 1일 전
new Intl.RelativeTimeFormat().format(1, "day"); // 1일 후
new Intl.RelativeTimeFormat("ko", { numeric: "auto" }).format(-2, "day"); // 그저께
new Intl.RelativeTimeFormat("ko", { numeric: "auto" }).format(2, "day"); // 모레
new Intl.RelativeTimeFormat().format(2, "week"); // 2주 후
new Intl.RelativeTimeFormat().format(3, "month"); // 3개월 후

// ListFormat
new Intl.ListFormat("ko").format(["치킨", "피자", "햄버거"]); // 치킨, 피자 및 햄버거
new Intl.ListFormat("ko", { type: "disjunction" }).format([
  "치킨",
  "피자",
  "햄버거"
]); // 치킨, 피자 또는 햄버거

// NumberFormat
new Intl.NumberFormat("ko", { style: "currency", currency: "KRW" }).format(
  42000
); // ₩42,000
new Intl.NumberFormat("en", { style: "currency", currency: "USD" }).format(
  75.2468
); // $75.25
new Intl.NumberFormat("ko", { style: "percent" }).format(0.24); // 24%
new Intl.NumberFormat("ko", { style: "percent" }).format(5 / 9); // 56%

// PluralRules
new Intl.PluralRules("en").select(1); // one
new Intl.PluralRules("en").select(0); // other
new Intl.PluralRules("en").select(3); // other

참고

Date

Date 객체와 날짜

Intl

자바스크립트의 Intl API

This post is licensed under CC BY 4.0 by the author.