개요
서비스를 개발하다 보면 당연하게도 시간과 날짜를 다루는 일이 굉장히 많다.
특히 백엔드를 개발하는 경우 DB에 저장할 때 created_at, updated_at, deleted_at 등 시간과 날짜를 다루는 경우를 많이 볼 수 있다.
JavaScript에서 Date 객체의 특징을 알아보고 사용하는 방법을 알아보고자 한다.
Date 객체 생성
JavaScript의 내장 객체로 Date가 있기 때문에 많이 해줄 것 없이 Date 객체를 생성할 수 있다.
심지어 내가 특정 날짜를 지정해서 Date 객체를 생성할 수도 있다.
// 현재 시간 조회
const now = new Date();
// 연, (월-1), 일, 시 , 분 초
// 2020년 3월 1일 12시 40분 22초
const birth = new Date( 2020, 3, 1, 12, 40, 22 );
위처럼 정말 간단하게 객체를 만들 수 있다.
위 예제를 보면 간단하지만 특이한 점을 하나 볼 수 있을 것이다.
바로 (월-1)이다.
이처럼 Date 객체에는 실제 값이 아닌 인덱스 개념을 반환하는 것이 있다.
대표적으로 getMonth()와 getDay()이다.
getMonth()는 월을 반환하는 메서드이다. 이 때, Month로 올 수 있는 값은 0~11이다.
0번 인덱스가 1월, 1번 인덱스가 2월 .... 해서 11번 인덱스가 12월인 것이다.
따라서, Date 객체를 사용할 때 정확한 월을 가져오려면 적절히 1을 더하거나 빼주어야 한다.
getDay()는 요일을 반환하는 메서드이다. 이 때 Day로 올 수 있는 값은 0~6이다.
0번 인덱스가 일요일, 1번 인덱스가 월요일... 해서 6번 인덱스가 토요일이다.
배열을 함께 사용해서 요일을 표현할 때 유용하게 사용할 수 있다.
// 현재 시간이 2025년 09월 04일 15시 30분 42초 목요일이라면
const now = new Date();
now.getFullYear(); // 2025
now.getMonth(); // 8
now.getDate(); // 4
now.getHours(); // 15
now.getMinutes(); // 30
now.getSeconds(); // 42
now.getDay(); // 4
위와 같은 값으로 결과가 나올 것이다.
이제 저기서 정확한 값으로 만들기 위해서는 아래와 같이 두 값만 수정해주면 된다.
const realMonth = now.getMonth() + 1;
const dayString = [ '일', '월', '화', '수', '목', '금', '토' ];
const realDay = dayString[now.getDay()];
이렇게 한다면 어려움 없이 시간과 날짜를 정확하게 표현할 수 있다.
결론
day와 month의 경우, 프론트엔드 개발자 입장에서 생각해봤을 때 표현할 방법이 정말 많은 요소이다.
요일과 같은 경우 Mon, Tue, Wed ... 처럼 영어 일부일 수도 있고 Monday, Tuesday, WednesDay ... 처럼 완전한 영단어일 수도 있고, 한글로 월요일, 화요일 일 수도 있고 일본어 일 수도 있고 등 표현할 수 있는 경우의 수가 무궁무진하다.
그렇기에 프론트엔드 개발자들이 이를 자체적으로 커스텀해서 사용하기 쉽게 배열의 인덱스를 고려해서 만들어준 것 같다.
Month도 마찬가지이다. 대부분 1, 2, 3 처럼 월로 표현하지만 영어와 같은 경우 jan, feb, mar .... 처럼 영어 일부일 수도 있고, January, February, March... 처럼 영어일 수도 있다. 다른 나라 언어는 모르지만 위처럼 특수하게 월 별로 영단어를 쓰는 경우가 있을 수도 있다. 무엇보다 가장 많이 사용하는 영어에서 이렇게 표현법이 따로 있기 때문에 이 또한 배열 사용을 고려한 것이 아닐까 싶다.
'Front-End > JavaScript,TypeScript' 카테고리의 다른 글
| [JavaScript] Event 다루기 (0) | 2025.09.09 |
|---|---|
| [JavaScript] Math를 사용한 난수 생성 (0) | 2025.09.08 |
| [JavaScript] 배열 객체의 활용 (0) | 2025.09.08 |
| [JavaScript] 배열을 통한 Queue, Stack 구현 (0) | 2025.09.05 |
| [JavaScript] String 내장 객체의 비슷한 기능의 함수 비교 (0) | 2025.09.05 |