본문 바로가기
JS/JavaScript 강의

[JS] 58. 날짜 만들기 - Date

by GiraffePark 2023. 1. 3.

안녕하세요. 박기린 입니다.

이번에는 Date 객체를 이용해서 JavaScript에서 날짜를 구현하는 방법에 대해 알아보겠습니다.

 

 

현재 시각

const now = new Date();
console.log(now); // 현재 날짜를 출력

 

new Date()

Date() 생성자 함수를 이용해서 날짜를 구현할 수 있습니다.

현재 시각을 나타내고 싶을 때는 아무것도 인수로 넘기지 않고 Date() 생성자 함수만 선언해주면 됩니다.

 

 

 

Date()의 인수 - String

console.log(new Date('Aug 02 2020 18:05:41'));
console.log(new Date('December 24, 2015'));

Date() 생성자는 구문 분석 기능을 가지고 있습니다. 특정 시간이 입력된 String을 인수로 넘기면, 자동으로 String을 구문분석 한 후에 적절한 시간으로 변환해줍니다.

다만, String의 형식은 위와 같은 구조여야 합니다.

 

실행결과물

 

Date()의 인수 - Number

console.log(new Date(2037, 10, 19, 15, 23, 5));
console.log(new Date(2037, 10, 31)); // 12월 1일
new Date( 년도, 월<0부터 시작을 하기 때문에 11월일 경우 10을 넘겨줘야 한다.>, 일, 시간, 분, 초)

String 방식 대신에, Number를 인수로 전달할 수 있습니다.

특별한 점은, 두 번째 인수에 월(month)을 입력하는데, 실제 달에 -1을 해서 입력해야 합니다. 0부터 시작하기 때문입니다.

(1월일 경우 0, 11월일 경우 10을 입력해야 한다.)

 

참고로, 11월에는 31일이 없습니다. 위의 코드에는 11월 31일을 인수로 집어넣었는데요, 이럴 경우 자동으로 JS 엔진이 계산을 해서 12월 1일로 수정해줍니다.

 

실행결과물

 

 

Date()의 인수 - 밀리초(millisecond, ms)

console.log(new Date(0));
console.log(new Date(3 * 24 * 60 * 60 * 1000)); // 3일 뒤를 밀리초로 계산한 식 

Date()에 Number을 ', (콤마 - comma)' 없이 하나만 넘기는 경우, 밀리초로 인식합니다. 

Unix시간이 생성된 '1970년 1월 1일 새벽 0시 (한국 기준 아침 9시)'를 기점으로, 인수로 받은 밀리초 만큼 지난 시간을 저장합니다.

 

+) n일 차를 밀리초로 계산한 식 n * 24 * 60 * 60 * 1000

 

실행결과물

 

 

Date object의 methods

const future = new Date(2037, 10, 19, 15, 23);

Date object에도 다양한 method가 있습니다. method는 날짜를 다양하게 출력하는 방식 위주로 구성되어 있습니다.

설명을 위해 위와 같은 futrue 상수가 있다고 가정을 하고 설명해보겠습니다.

 

 

 

Date.prototype.getFullYear()

console.log(future.getFullYear()); // 2037 <- getYear()도 있지만 절대 사용하지마라.

getFullYear()는 년도를 return합니다.

 

 

getYear()는 없나요?

-> 있습니다. 그런데 사용하지 않는 것을 추천드립니다.

Date.prototype.getYear()의 실행결과물

 

Date.prototype.getMonth()

console.log(future.getMonth()); // 10 <- JS에서 month는 0기반이다. 따라서 현실에서는 11이다.

getMonth()를 이용해서 월(month) 정보를 가져올 수 있습니다.

다만, 월(month)은 Date 객체에서 zero-based(0부터 시작)로 계산하기 때문에, 1월일 경우 0, 11월일 경우 10으로 출력됩니다.

 

 

 

getDate, getHours, getMinutes, getSeconds

console.log(future.getDate()); // 19
console.log(future.getHours());
console.log(future.getMinutes());
console.log(future.getSeconds());

각각,

getDate() : 날짜
getHours() : 시간
getMinutes() : 분
getSeconds() : 초

을 return 합니다.

 

 

Date.prototype.getDay() - 요일

console.log(future.getDay()); // 4 <- 요일을 나타내는 것으로 0은 일요일이고 4는 목요일이다.

getDay()를 이용해서 요일을 구할 수 있습니다.

여기서 요일은 'Monday'와 같은 String이 아니라 Number 형태로 return 합니다.

 

*getDay()가 return하는 요일 Number
일요일 - 0
월요일 - 1
화요일 - 2
수요일 - 3
목요일 - 4
금요일 - 5
토요일 - 6

 

 

 

Date.prototype.toISOString()

console.log(future.toISOString()); // 국제 표준 ISO에 따르는 날씨표기를 String으로 반환

toISOString()은 저장된 Date를 String으로 return 합니다. 이때, ISO의 날짜표기 표준을 따르는 형태로 String을 return 합니다.

 

 

getTime() - 타임스탬프

console.log(future.getTime()); // 2142256980000 <- 1970년 1월 1일 이후로 얼마나 지나갔는지 타임스탬프

getTime()은 주어진 시간의 타임스탬프를 return 합니다.

 

+) 타임스탬프란?

1970년 1월 1일 이후로 얼마나 지나갔는 지를 밀리초 단위로 계산한 시간입니다.

 

 

타임스탬프가 밀리초 단위라서, Date() 생성자 함수의 인수로 전달해주면 시간을 역추적할 수 있습니다.

 

 

 

set 메소드

future.setFullYear(2040); // 날짜를 수정. setFullYear는 년도 수정

지금까지 본 메소드는 이름이 전부 'get'으로 시작했습니다. 정보를 받아온다는 뜻입니다.

'set'으로 시작하는 메소드도 있습니다. 정보를 수정(지정)한다는 뜻입니다.

 

setFullYear(): 년도
setDate() : 날짜
setHours() : 시간
setMinutes() : 분
setMonth() : 월
setSeconds() : 초 
setTime() : 1970년 1월 1일을 기점으로 떨어진 시간 (밀리초 단위)

* setDay()는 없는 것으로 보입니다.

 

반응형