자바스크립트에는 연/월/일/시/분/초/밀리초를 구할 수 있는 빌트인 객체인 Date가 있다. 생성자 함수로 작동되는 메서드이면서 객체인 Date 객체는 단순하게 아래의 방법으로 생성할 수 있다.
한국에서 해당 Date 객체를 생성하면 다음과 같은 기호를 볼 수 있는데, GMT는 그리니치 평균시를 말하며, 한국은 영국에서부터 9시간 빠르기 때문에 +0900이 덧붙여졌다.
Date 객체를 생성하는 방법은 위의 코드를 선언함으로 가능하다. 보듯이 new 가 선행된다. 즉 Date은 이미 만들어진 생성자함수로부터 만들어진 새로운 객체인 것이다.
- 아래의 이미지는(사파리 기준) 해당 결과를 HTML에서 실행한 내용이다.
- 반면에(사파리 기준) 아래의 이미지는 콘솔에서 내용을 실행했을 때이다.
약간의 내용의 차이가 있다.
//입렵방법(1)
new Date(2022,1,19,10:00,00,0)
//입렵방법(2)
new Date(2022/1/19/10:00:00:00)
입력한 내용에 따라서 계산이 가능하다. 00:00:00 시분초까지도 구체적인 지정이 가능하다.
자세히 보면 신경써야 할 부분이 있다. 바로 month(월)이다. 이유는 모르겠지만, 컴퓨터의 달력계산은 0~11월까지이다. 우리가 아는 1~12월까지와 다르다. 그러기에 우리의 달력으로 변환을 하려면 +1을 해해주어야 한다.
만약 과거의 날짜를 직접 입력한다면, 우리가 아는 월-1을 해주어야 바른 계산이 이뤄진다. 이 문제 때문에 뭐지 하면서 30분은 허덕인 것 같다. -1을 해주지 않으면 달력으로써의 의미를 상실한다. 세부적인 요일 계산에 어려움을 느낄 것이다.
또한 월과 일의 경우 1자리인 숫자를 0으로 바꿔주기 위해서 코트펜의 코드에서 볼 수 있듯이 약간의 정보를 가공해주었다.
function solution(a, b) {
let today = new Date(2016, a-1,b)
let day = today.getDay()
let dayTxt = ["SUN","MON","TUE","WED","THU","FRI","SAT"]
return dayTxt[day]
}
let fullYear12 = today.getHours()%12 || 12
버티컬바(||)가 여기서도 사용되었다. 찾아보니 버티컬바(왼편)이 만약 0이면 버티컬파(오른편)으로 초기값을 설정해주는 것이 위에서 기록된 코드이다.