top of page

Countdown Timer in JavaScript

  • Writer: سُلَيْمَان بْن دَاوُوْد
    سُلَيْمَان بْن دَاوُوْد
  • Oct 21, 2022
  • 2 min read


<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>
<body>

	<div class="counter-sec">
		<div class="counter-heading">

		</div>
		<div class="counter-box">

			<div id="timer">
				<div id="clockdiv">
					<div class="counter_col">
						<span class="months">0</span>
						<div class="smalltext">Months</div>
					</div>
					<div class="counter_col">
						<span class="days">0</span>
						<div class="smalltext">days</div>
					</div>
					<div class="counter_col"> 
						<span class="hours">0</span>
						<div class="smalltext">Hours</div>
					</div>

					<div class="counter_col"> 
						<span class="minute">0</span>
						<div class="smalltext">Minutes</div>
					</div>

					<div class="counter_col">
						<span class="seconds">0</span>
						<div class="smalltext">Secs</div>
					</div>
				</div>
			</div>
		</div>
	</div>
</div>

<style type="text/css">
	
.counter-sec {
    position: absolute;
    background: #fff;
    
    border: 1px solid #000;
    width: 100%;
    max-width: 354px;
    border-bottom: none;
}
#clockdiv {
    display: flex;
}
#clockdiv .counter_col {
    display: block;
    border-right: 1px solid #000;
    text-align: center;
    width: 25%;
}

</style>

<script type="text/javascript">
	
	window.addEventListener("load", function(){

		if(document.querySelector(".counter-sec")){

	function getInput() {
	 const input    = "08/01/2023";
      //const input  = bump_data.countdownDate;  use this value with timezone dynamic from backend

      const deadline = new Date(input);
      return deadline;
 }



 function leapYear(year) {
 	if (year % 4 !== 0) {
 		if (year % 400 !== 0 && year % 100 !== 4) {
 			return false;
 		}
 		return false;
 	}
 	return true;
 }

 const deadline = getInput();
 if (deadline < Date.now()) {

 	alert("Sorry; we don't count up from a past event");

 } else {
 	console.log(deadline.getMonth());    
 	const timerId = setInterval(() => {
 		const now = new Date().getTime();
 		const timeDiff = deadline - now;
 		let february = 0;
 		if (leapYear(deadline.getFullYear())) {
 			february = 29;
 		} else {
 			february = 28;
 		}

 		const daysInMonth = [31, february, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
 		let days = Math.floor(timeDiff / (1000 * 60 * 60 * 24));
 		let months = Math.floor(days / daysInMonth[deadline.getMonth()]);
 		days %= daysInMonth[deadline.getMonth()];

 		const currentDate = new Date();
 		if (currentDate.getMonth() < deadline.getMonth() && currentDate.getDate() === deadline.getDate()) {
 			days = 0;
 			const monthDiff = deadline.getMonth() - currentDate.getMonth();
 			months = monthDiff;
 		} else if (currentDate.getDate() < deadline.getDate() && currentDate.getMonth() === deadline.getMonth()) {
 			const daysDiff = deadline.getDate() - currentDate.getDate();
 			days = daysDiff;
 			months = 0;
 		} else if (currentDate.getMonth() < deadline.getMonth() && currentDate.getDate() < deadline.getDate()) {
 			const daysDiff = deadline.getDate() - currentDate.getDate();
 			const monthsDiff = deadline.getMonth() - currentDate.getMonth();
 			days = daysDiff;
 			months = monthsDiff;
 		}

 		const hours = Math.floor((timeDiff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
 		const minutes = Math.floor((timeDiff % (1000 * 60 * 60)) / (1000 * 60));
 		const seconds = Math.floor((timeDiff % (1000 * 60)) / 1000);
 		d1 = new Date(deadline.getFullYear(), deadline.getMonth()+1, deadline.getDate());                
 		d2 = new Date(currentDate.getFullYear(), currentDate.getMonth()+1, currentDate.getDate());               
 		diff = new Date(
 		                d1.getFullYear()-d2.getFullYear(), 
 		                d1.getMonth()-d2.getMonth(), 
 		                d1.getDate()-d2.getDate()
 		                );
 		document.getElementsByClassName("days")[0].textContent = diff.getDate();
 		document.getElementsByClassName("months")[0].textContent = months;
 		document.getElementsByClassName("hours")[0].textContent = hours;
 		document.getElementsByClassName("minute")[0].textContent = minutes;
 		document.getElementsByClassName("seconds")[0].textContent = seconds;
 		if (timeDiff < 0) {
 			clearInterval(timerId);
 			const event = document.getElementById("event");
 			document.getElementById("is-it-time").textContent = `${event} is here!`;
 			document.getElementsByClassName("months")[0].textContent = "0";
 			document.getElementsByClassName("days")[0].textContent = "0";
 			document.getElementsByClassName("hours")[0].textContent = "0";
 			document.getElementsByClassName("minute")[0].textContent = "0";
 			document.getElementsByClassName("seconds")[0].textContent = "0";
 		}


 	}, 1000);
 }
}


})
</script>
</body>
</html>

 
 
 

Recent Posts

See All
Duplicate Category in Wordpress

The following code helps to duplicate the default wordpress category by help of code. // Add Duplicate option for categories in WordPress...

 
 
 
C#.NET and Its Associated Codes

1- Creating an Desktop Application in C#.NET C# ADO.NET & MySQL MAIN C# and MySQL ADO.NET with Crystals Reports Ready Code 2- Handling...

 
 
 

Comments


© 2020 by syednazrulhassan

bottom of page