const clock = document.querySelector(".clock");
function getDday() {
const date = new Date();
const xmax = new Date("2021-12-24T00:00:00");
const distance = xmax.getTime() - date.getTime();
//현재시점에서 크리스마스 이브까지 남은 시간을 ms로 계산된 값을 리턴함
const day = Math.floor(distance / (24*60*60*1000));
const hour = String(Math.floor(distance/(1000*60*60) % 24)).padStart(2,"0");
const minute = String(Math.floor(distance/(1000*60) % 60)).padStart(2,"0");
const second = String(Math.floor(distance/(1000) % 60)).padStart(2,"0");
clock.innerText = `크리스마스 이브까지 ${day}d ${hour}h ${minute}m ${second}s 남았습니다.`
}
getDday();
setInterval(getDday, 1000);
Date(); // "Wed Aug 04 2021 22:49:13 GMT+0900 (한국 표준시)"
const date = new Date() // 현재 날짜와 시간의 정보를 나타낸다
const xmax = new Date("2021-12-24T00:00:00");
const xMas = new Date(2021, 11, 24, 00, 00, 00)
//xmax와 xMas는 모두 크리스마스 이브 시점의 날짜와 시간의 정보를 나타낸다
타이머를 만들 때 가장 생각을 많이 하게 만들었던 부분이다.
distance는 현재 시점으로부터 이브까지 남은 시간을 ms로 계산한 값이므로
hour = ( distance/(60x60x1000) ) % 24 이렇게 계산해주게 되는데
이유는!!!! distance/(60x60x1000) 까지의 결과값은 시간.xxx을 의미한다.
그런데 시간은 24시간이 되면 'hour'가 아닌 'Day'가 되기 때문에 24로 나눈 나머지가
hour로 표현된다. 이것이 % 연산자를 사용하는 이유이다
String(Math.floor(distance/(1000) % 60)).padStart(2,"0");
String.padStart(param1, param2);
String.padEnd(param1, param2)
padStart(2,"0") // 2자리로 만들고 , 앞에 0을 붙여준다 23:14:02
padEnd(2, "0") // 2자리로 만들고, 뒤에 0을 붙여준다 23:14:20
window, worker 인터페이스에서 정해놓은 일정 시간 간격으로 함수를 호출하거나 코드를 실행하는 Method.
function setInterval (handler: TimerHandler,
timeout?: number, ...arguments: any[]): number
이와 비슷하지만 조금은 다른
window, worker 인터페이스에서 정해놓은 시간 후에 함수를 호출하거나 코드를 실행하는 Method.
function setTimeout (handler: TimerHandler, timeout?: number, ...arguments: any[]): number
간단한 작업이지만 새로운 JS의 개념들을 배우게 되서 너무 기쁘다.
이렇게 배운것들을 하나하나 정리해 나가면서 계속해서 공부하고 발전해나가고 싶다.
더 잘하고싶은 동기부여를 받은 하루.