new Date()
지난번 포스팅에서 설명한 것과 같이 파라미터로 아무것도 전달하지 않고 Date 객체를 생성하면
현재 날짜와 시간을 가진 Date 객체가 생성됩니다.
new Date(year, month, day, hours, minutes, seconds, milliseconds)
Date 객체를 생성할 때 다음의 7개 파라미터를 순서대로 전달하면
지정한 날짜와 시간으로 Date 객체가 생성됩니다.
년도, 월, 일, 시, 분, 초, 밀리초 |
주의할 것은 연도와 월은 필수 입력값이라는 것입니다.
만약 연도만 파라미터로 전달하면, 전달된 년도는 아래 나오는 함수인 new Date(milliseconds)로 해석됩니다.
또 한가지 주의할 것은 월은 0에서 11 사이의 숫자(0~11)가 입력되어야 합니다.
즉, 0이 입력되면 1월로 해석됩니다.
new Date(milliseconds)
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시간 기준으로 시간을 표현하고 싶으면,
위와 같이 toUTCString() 함수를 사용하면 됩니다.
1970년 1월 1일 이전의 날짜 표현하기
그렇다면 1970년 1월 1일 이전의 날짜는 어떻게 표현해야 할까요?
위와 같이 milliseconds 자리에 마이너스 값을 넣어줘서 1970년 1월 1일 이전의 시간을 표현할 수 있습니다.
new Date('date')