Date 생성자는 시간의 특정 지점을 나타내는 Date 객체를 생성한다. 별도의 인수를 전달하지 않는다면 현재 날짜와 시간을 가지는 인스턴스를 반환한다.
const date = new Date();
console.log(date);
//Sat Oct 03 2020 21:34:03 GMT+0900 (대한민국 표준시)
년도와 일은 초기 정수값이 1로 시작되어 비교할 때 헷갈림이 없지만, 월(month)의 경우, 인덱스로 0부터 11까지로 표현되므로 내가 1월을 생각해서 1를 넣으면 month의 인덱스가 1인 2월이 표기된다.
month = [ 1(Jan), 2(Feb), 3(Mar), 4(Apr), 5(May), 6(Jun), 7(Jul), 8(Aug), 9(Sep), 10(Oct), 11(Nov), 12(Dec) ]
month[0] = 1(Jan);
스트링 자체로 넣어서 해결하는 방법도 있지만,
배열 및 쉼표로 구분하는 경우 해당 매개변수를 '인덱스'로 인지하는 점을 깨달을 수 있었다.
toLocaleString 을 통해 현재 시간과 날짜를 손쉽게 얻을 수 있다. 사용자의 문화권에 맞는 시간표기법으로 객체의 시간을 리턴하는데 Date와 Time으로도 얻어낼 수 있다.
let nowDate = new Date().toLocaleDateString().replaceAll(".","").split(" ").join("/")
nowDate; // "2020/10/3"
let nowTime = new Date().toLocaleTimeString().slice(0,7)
nowTime // "오후 9:54"
현재 날짜와 시간을 초단위로 반복출력하는 예제는 이 사이트의 코드를 가져왔다.
(function printNow() {
const today = new Date();
const dayNames = ['(일요일)', '(월요일)', '(화요일)', '(수요일)', '(목요일)', '(금요일)', '(토요일)'];
// getDay: 해당 요일(0 ~ 6)를 나타내는 정수를 반환한다.
const day = dayNames[today.getDay()];
const year = today.getFullYear();
const month = today.getMonth() + 1;
const date = today.getDate();
let hour = today.getHours();
let minute = today.getMinutes();
let second = today.getSeconds();
const ampm = hour >= 12 ? 'PM' : 'AM';
// 12시간제로 변경
hour %= 12;
hour = hour || 12; // 0 => 12
// 10미만인 분과 초를 2자리로 변경
minute = minute < 10 ? '0' + minute : minute;
second = second < 10 ? '0' + second : second;
const now = `${year}년 ${month}월 ${date}일 ${day} ${hour}:${minute}:${second} ${ampm}`;
console.log(now);
setTimeout(printNow, 1000);
}());
구문 : setTimeout(callback, millisecond);
구문 : setTimeout(callback, millisecond);