Solved

Javascript countdown timer

Posted on 2009-03-29
3
253 Views
Last Modified: 2012-05-06
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()

{

	//load dates

	var startDate = new Date()

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

	

	//load variable

	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

Open in new window

0
Comment
Question by:98fatboyrider
3 Comments
 
LVL 31

Assisted Solution

by:Frosty555
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

by:fsze88
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

by:
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()

{

	//load dates

	var startDate = new Date()

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

	

	//load variables

	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

}

Open in new window

0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I've been asked to discuss some of the UX activities that I'm using with my team. Here I will share some details about how we approach UX projects.
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo‚Ķ
Viewers will get an overview of the benefits and risks of using Bitcoin to accept payments. What Bitcoin is: Legality: Risks: Benefits: Which businesses are best suited?: Other things you should know: How to get started:
This video teaches users how to migrate an existing Wordpress website to a new domain.

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now