자바스크립트를 사용하여 현재 날짜를 받고, 이를 통해 디데이를 계산하는 방법에 대해 알아보도록 하겠습니다.
현재 날짜와 디데이 날짜 설정
디데이를 계산하려면 현재 날짜와 디데이 날짜를 알아야겠죠? 자바스크립트에서는 new Date()를 통해 현재 날짜와 시각을 받을 수 있습니다. 디데이 날짜는 올해의 크리스마스로 지정해보도록 하겠습니다.
function christmasClock() {
const today = new Date();
const year = today.getFullYear();
const christmas = new Date(`${year}-12-25`);
디데이 계산하기
이제 오늘 날짜와 디데이 날짜의 차이를 계산하고 이를 디데이 형식으로 표현할 수 있습니다.
const untilChristmas = new Date(christmas - today);
const day = String(Math.floor(untilChristmas / (1000 * 3600 * 24)));
const hour = String(
Math.floor((untilChristmas / (1000 * 3600)) % 24)).padStart(2, "0");
const minute = String(
Math.floor((untilChristmas / (1000 * 60)) % 60)).padStart(2, "0");
const second = String(Math.floor((untilChristmas / 1000) % 60)).padStart(2,"0");
날짜의 차이를 연산하면 밀리세컨드로 결과가 반환되는데요. 따라서 이를 다시 일, 시간, 분, 초로 변환해줍니다. padStart()는 해당 문자열의 자릿수를 지정하고 조건을 만족하지 않는 경우 특정 문자("0")를 추가하는 메소드입니다.
디데이 표현하기
이제 setInterval()을 통해 해당 함수를 1초마다 호출하고, 해당 결과를 HTML에 표시해줍니다.
const clockTitle = document.querySelector(".dDay");
function christmasClock() {
const today = new Date();
const year = today.getFullYear();
const christmas = new Date(`${year}-12-25`);
const untilChristmas = new Date(christmas - today);
const day = String(Math.floor(untilChristmas / (1000 * 3600 * 24)));
const hour = String(
Math.floor((untilChristmas / (1000 * 3600)) % 24)).padStart(2, "0");
const minute = String(
Math.floor((untilChristmas / (1000 * 60)) % 60)).padStart(2, "0");
const second = String(Math.floor((untilChristmas / 1000) % 60)).padStart(2,"0");
clockTitle.innerText = `${day}일 ${hour}시 ${minute}분 ${second}초`;
}
setInterval(christmasClock, 1000);
<!DOCTYPE html>
<html>
<head>
<title>Time Until Christmas Eve<</title>
<meta charset="UTF-8" />
</head>
<body>
<h1>🎄 크리스마스까지 남은 시간</h1>
<h2 class="dDay">000일 00시 00분 00초</h2>
<script src="src/index.js"></script>
</body>
</html>
최종 결과물은 다음과 같습니다.
🎄 크리스마스까지 남은 시간
최종 결과물
'개발 > JavaScript' 카테고리의 다른 글
| 자바스크립트 배열 요소 랜덤 선택하기 (0) | 2023.01.05 |
|---|---|
| 자바스크립트 클래스 설명 (0) | 2022.11.15 |
| 자바스크립트 Set 설명 (0) | 2022.11.01 |
