Solved

# Javascript countdown timer

Posted on 2009-03-29
247 Views
I'm trying to create a countdown timer in javascript for a web page.  Everything appears to be working correctly except for the seconds. I think it must be my calculation, but I don't know what else to try. Can  anyone see where I'm going wrong?
``````function calculate()

{

var startDate = new Date()

var endDate = new Date("May 19, 2009, 21:00:00")

var secPerYear = 60*60*24*365;

var secPerDay = 60*60*24;

var secPerHour = 60*60;

var secPerMin = 60;

//seconds left right now

var seconds = (endDate.getTime() - startDate.getTime()) / 1000

//get years left value

var years = Math.floor(seconds / secPerYear)

//remove seconds from year

seconds = seconds - (years * secPerYear)

//get day value

var days = Math.floor(seconds / secPerDay)

//remove seconds from day

seconds = seconds - (days * secPerDay)

//get hours value

var hours = Math.floor(seconds / secPerHour)

//remove seconds from hours

seconds = seconds - (hours * secPerHour)

//get minutes

var minutes = Math.floor(seconds / secPerMin)

//remove seconds from minutes

seconds = seconds - (seconds * secPerMin)

seconds = (seconds / 1000);

lblYears.innerHTML = years

lblDays.innerHTML = days

lblHours.innerHTML = hours

lblMinutes.innerHTML = minutes

lblSeconds.innerHTML = seconds
``````
0
Question by:98fatboyrider

LVL 31

Assisted Solution

Frosty555 earned 200 total points
ID: 24013712
Everything looks fairly sound, but I think your last line:

seconds = (seconds / 1000);

Isn't necessary. Your seconds are already in seconds, you shouldn't need to divide by 1000 again.
0

LVL 15

Assisted Solution

fsze88 earned 300 total points
ID: 24019503
you can try this, much more simplified
<script type="text/javascript">

var startDate = new Date()
var endDate = new Date("May 1, 2009, 22:50:00")
var differentDate;
differentDate = new  Date(endDate - startDate);
document.write("differentDate.getSeconds() : " + differentDate.getSeconds() + "<br/>" );
document.write("differentDate.getMinutes() : " + differentDate.getMinutes() + "<br/>" );
document.write("differentDate.getHours() : " + differentDate.getHours() + "<br/>" );
document.write("differentDate.getDate() : " + differentDate.getDate() + "<br/>" );
document.write("differentDate.getMonth() : " + (differentDate.getMonth()-1) + "<br/>" );
document.write("differentDate.getFullYear() : " + differentDate.getFullYear() + "<br/>" );
</script>
0

Accepted Solution

98fatboyrider earned 0 total points
ID: 24068334
Turns out it was a calculation error at line 38. I should have been multiplying by minutes, not seconds. Once that was working, I rounded the result to trim the milliseconds. Thanks for the help.
``````function calculate()

{

var startDate = new Date()

var endDate = new Date("May 12, 2009, 21:00:00")

var secPerYear = 60*60*24*365;

var secPerDay = 60*60*24;

var secPerHour = 60*60;

var secPerMin = 60;

//seconds left right now

var seconds = (endDate.getTime() - startDate.getTime()) / 1000

//get years left

var years = Math.floor(seconds / secPerYear)

//remove seconds from year

seconds = seconds - (years * secPerYear)

//get days

var days = Math.floor(seconds / secPerDay)

//remove seconds from day

seconds = seconds - (days * secPerDay)

//get hours value

var hours = Math.floor(seconds / secPerHour)

//remove seconds from hours

seconds = seconds - (hours * secPerHour)

//get minutes

var minutes = Math.floor(seconds / secPerMin)

//remove seconds from minutes

seconds = seconds - (minutes * secPerMin)

seconds = Math.round(seconds) -1

lblYears.innerHTML = years

lblDays.innerHTML = days

lblHours.innerHTML = hours

lblMinutes.innerHTML = minutes

lblSeconds.innerHTML = seconds

}
``````
0

## Featured Post

This article will give core knowledge of JavaScript and will head in to your first JavaScript program. I am Durvesh Naik and I am here to deal with this series of JavaScript. I will teach you JavaScript in part wise , as its quite boring to read big…
This article discusses the difference between strict equality operator and equality operator in JavaScript. The Need: Because JavaScript performs an implicit type conversion when performing comparisons, we have to take this into account when wri…
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.