어제 오늘 내일

[Javascript] Date 객체로 원하는 날짜, 시간 표현하기 본문

IT/Javascript

[Javascript] Date 객체로 원하는 날짜, 시간 표현하기

hi.anna 2019. 8. 2. 07:00

지난번에는 Javascript에서 Date 객체를 활용하여 현재 날짜와 시간을 가져오는 방법을 알아보았습니다.

[Javascript] 현재 날짜, 시간 구하기

 

 

이번에는 Date 객체로 원하는 날짜와 시간을 표현하는 방법을 알아보도록 하겠습니다.

new Date()
new Date(year, month, day, hours, minutes, seconds, milliseconds)
new Date(milliseconds)
new Date('date')

Javascript에서는 위의 4가지 방법을 사용하여 날짜와 시간을 표현할 수 있습니다.

 

new Date()

See the Pen CurrentDate by anna (@hianna) on CodePen.

 

지난번 포스팅에서 설명한 것과 같이 파라미터로 아무것도 전달하지 않고 Date 객체를 생성하면

현재 날짜와 시간을 가진 Date 객체가 생성됩니다.

 

new Date(year, month, day, hours, minutes, seconds, milliseconds)

See the Pen CurrentDate by anna (@hianna) on CodePen.

 

 

Date 객체를 생성할 때 다음의 7개 파라미터를 순서대로 전달하면

지정한 날짜와 시간으로 Date 객체가 생성됩니다.

년도, 월, 일, 시, 분, 초, 밀리초

 

주의할 것은 연도와 월은 필수 입력값이라는 것입니다.

만약 연도만 파라미터로 전달하면, 전달된 년도는 아래 나오는 함수인 new Date(milliseconds)로 해석됩니다.

 

또 한가지 주의할 것은 월은 0에서 11 사이의 숫자(0~11)가 입력되어야 합니다.

즉, 0이 입력되면 1월로 해석됩니다.

 

 

 

 

 

new Date(milliseconds)

See the Pen CurrentDate by anna (@hianna) on CodePen.

 

Date 객체를 생성할 때 위와 같이 파라미터를 1개만 지정하면 이 값은 milliseconds로 해석됩니다.

그런데, 위 예제에서 milliseconds 값으로 1000을 전달하였는데 출력된 날짜가 1970년 1월 1일 9시 0분 1초인 것을 볼 수 있습니다.

여기에서 milliseconds의 기준일자는 1970년 1월 1일 0시 0분 0초 0밀리초(UTC 시간 기준)이기 때문입니다.

( ※ UTC시간이란 '협정 세계시'로 1972년 1월 1일부터 시행된 국제 표준시입니다. )

즉, 1970년 1월 1일 0시 0분 0초 0밀리초에 1000이 더해진 시간인 1970년 1월 1일 0시 0분 1초를 표현하는 Date 객체가 생성된 것입니다.

 

그런데, 자세히 보면 1970년 1월 1일 0시 0분 1초가 아니라, 1970년 1월 1일 9시 0분 1초입니다.

리나라는 UTC시간과 9시간의 시차가 나기 때문에 1970년 1월 1일 9시 0분 1초라고 나오는 것입니다.

 

즉, 이 예제처럼 milliseconds를 파라미터로 전달하면

1970년 1월 1일 0시 0분 0초 0밀리초를 기준으로, 

입력된 millisecond만큼 지난 후의 날짜를 가진 Date 객체를 생성하게 됩니다.

그리고, 생성된 Date 객체를 출력하면 해당 브라우저에 설정된 시간대 기준으로 시간을 표현해 줍니다.

 

만약, UTC시간 기준으로 시간을 표현하고 싶으면,

See the Pen CurrentDate by anna (@hianna) on CodePen.

 

위와 같이 toUTCString() 함수를 사용하면 됩니다.

 

 

1970년 1월 1일 이전의 날짜 표현하기

그렇다면 1970년 1월 1일 이전의 날짜는 어떻게 표현해야 할까요?

See the Pen CurrentDate by anna (@hianna) on CodePen.

위와 같이 milliseconds 자리에 마이너스 값을 넣어줘서 1970년 1월 1일 이전의 시간을 표현할 수 있습니다.

 

new Date('date')

See the Pen CurrentDate by anna (@hianna) on CodePen.

 

파라미터로 날짜와 시간을 의미하는 String을 직접 입력하는 방법입니다.

전달하는 String의 포맷에 대해서는 다음 포스팅에서 더 자세히 설명하도록 하겠습니다.

 

 

지금까지 Date 객체에 특정 날짜와 시간을 세팅하는 방법을 알아보았습니다.

반응형
Comments