[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 300
  • Last Modified:

Javascript countdown timer

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
98fatboyrider
Asked:
98fatboyrider
3 Solutions
 
Frosty555Commented:
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
 
fsze88Commented:
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
 
98fatboyriderAuthor Commented:
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

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now