|
|
How do I create a JavaScript countdown timer on my Web page?Dave, being a new web developer I would like to know how I can code for a numeric value to decrease by 1 every 24 hours based on the local time function. Specifically, we are trying to create a reminder for our employees of an upcoming DoD audit in the facility. The count down will represent the number of days remaining before it's conducted. So what I need to do is begin with a date and start the countdown from there. What is the code that I should use? This is an obvious situation where JavaScript is going to be your friend, and it turns out that this is a straightforward application of JavaScript so it should be fairly easy. The key is to realize that JavaScript is a so-called object oriented programming language and that it has a specific date object with "methods" that let you set and extract specific values. But, really, this task is even easier than that, because all we need to do is set a specific target date in the future, get the current date, then calculate the amount of time between them and divide it out so that we end up with days as the value. You get the current date in JavaScript with new Date(), and it turns out that if you specify a date in the parens, it instantiates (creates) a new object with the specified date, rather than today. Want to have a date object with 28 February, 2005 as the specified date? Use new Date("28 February, 2005") and it'll work just fine. Then we want to work with what us Unix types call the "epoch time" which is the number of milliseconds since a fixed point in the past. For convenience, it's 1 Jan, 1970 on most systems, but if you think about it you'll realize that it doesn't matter what date the epoch time starts with, as long as it's consistent across both values. Anyway, let's see some code! <script language="javascript" type="text/javascript">
today = new Date();
todayEpoch = today.getTime();
target = new Date("28 February, 2005");
targetEpoch = target.getTime();
daysLeft = Math.floor(((targetEpoch - todayEpoch) / (60*60*24)) / 1000);
</script>
This JavaScript code snippet, which I'd put in the HEAD of my document, calculates the number of days left until the target date and saves it in the variable daysLeft. Notice that since we're actually working in milliseconds and we want days, we need to divide by 1000 to get seconds, then divide by 60 (to get minutes), 60 again (to get hours) and then 24 (to get days). Finally, we use the mathematical floor function to make sure we don't get weird values like 23.434233 days or similar, as a convenience. Whenever you want to actually include that value on the page, simply add a single line of JavaScript within the HTML code: <script>document.write(daysLeft);</script> To put it all together, here's a simple little page that has both JavaScript code pieces displayed: <html>
<head>
<title>JavaScript Countdown timer test</title>
<script language="javascript" type="text/javascript">
today = new Date();
todayEpoch = today.getTime();
target = new Date("28 February, 2005");
targetEpoch = target.getTime();
daysLeft = Math.floor(((targetEpoch - todayEpoch) / (60*60*24)) / 1000);
</script>
</head>
<body>
<h1>DoD inspection in
<script>document.write(daysLeft);</script>
days. Are you ready?
</h1>
</body>
I hope that'll help you create what you need on your site, and good luck with your DoD inspection too!
Related HTML, JavaScript and Web Site Programming articles:
✔ How to Create Predefined Google Image Search Links?
Thanks for the Amazon URL [see Creating Amazon Search Links]. That worked beautifully. In fact, I sent you $5.00 for coffee in thanks....
✔ Can I embed a Facebook search box on my blog site?I've seen your articles about how to add a Twitter or Google search box on a Web page, but I have a tougher...
✔ Can I use CSS for drop shadows on my blog?I want to give my site a bit of a facelift and add some neat graphical elements. One of which is drop shadows....
✔ How can I embed interactive photo panoramas on my site/blog?I read through your blog entry about how to take panoramic photos with iOS 6 and an iPhone 5 and got enthused. I've...
✔ How can I create a Twitter search URL shortcut?I'd like to add a few Twitter search links to my Web site. Is that possible, or does Twitter prohibit this sort of...
Let's stay in touch!
Sign up for my weekly AskDaveTaylor Newsletter and you'll receive even more tech and gadget help
right to your inbox, along with exclusive news and industry updates. It's good stuff. I promise!
Categorized:
HTML, JavaScript and Web Site Programming
(Article 3874,
Written by Dave Taylor)
Tagged: Previous: What's an RSS Aggregator? Next: How do I flatten a directory structure in Unix? Reader Comments To Date: 51Dave Taylor said, on February 1, 2005 3:39 AM:
Absolutely right, David. Since the person submitting the question was talking about a controlled work environment, I made the leap that they'd have standardized on a network time synchronization protocol and everyone would have the correct time on their computers, plus or minus a few seconds. If that's not true, then some people are definitely going to see odd results, but perhaps we can conclude that they receive less attention from IT and are therefore less critical to the success of the audit in the first place? (I know, this is pretty weak logic. Cut me some slack, okay? :-) ) Damien said, on October 19, 2005 5:00 PM:
Hi, I am enquiring about timing systems online. I am looking for a very accurate timing mechanism to incorporate into my website to evaluate correct Dave Taylor said, on October 20, 2005 2:35 AM:
Damien, pop over to Google and check out the results for "javascript millisecond timer". There are some interesting choices out there, and, yes, you can time down to the millisecond granularity. dinesh said, on December 1, 2005 5:53 AM:
hi thanks Jordan said, on May 18, 2006 11:53 AM:
thanks alot for the reply Brad said, on February 15, 2007 9:56 PM:
If you need one that works on myspace, check out this page Here Ashish said, on March 16, 2007 1:31 AM:
Hi Joe said, on September 10, 2007 7:20 PM:
First of all I know nothing about html. I want to add the timer that you see if you go to the link below. I want to put that timer or create my own and put it on my Facebook profile. Is this possible and how? Thanks zein said, on September 15, 2007 1:11 PM:
hi Lonnie Owens said, on January 12, 2008 12:46 PM:
I am looking to make a countdown clock for my webpage.... I don't have it published yet as I am not done with it... madhu said, on January 17, 2008 10:26 AM:
I want to send a mail automataically to a client afer 1 hour from my jsp page by using Javascript? Charles said, on February 20, 2008 3:08 PM:
I am using your coutdown timer, however, instead of changing the date count each day at midnight it changes it at roughly noon. The only thing I changed in the code is the date we need it to count down to. Any advice on what I am doing wrong? crackruckles said, on June 24, 2008 4:01 AM:
i have a website with a javatimer on it is there a javascript i can put in to stop it? and is there any way i can stop a timer that isnt javascript?
Kidino said, on October 30, 2008 4:05 AM:
I created this PHP-Javascript Countdown Timer. The PHP is to fetch server time. You can set it to any timezone you want. And the Javascript is for the animation... This way it will end at the same time, no matter where geographically your website visitor is. Full instructions included. Enjoy... http://www.minisitegallery.com/blog/php-javascript-countdown-script-with-timezone-setting.html Scott said, on November 7, 2008 1:34 PM:
I have this Java script created and looking to improve it. I want to have the script start automatically once I open the html without having to click start. Also I want to have it clear the cache in Internet Explorer. Any Help or suggestions would be appreciated. = siteCount) // --> Start
bhaiyalal said, on November 10, 2008 10:10 PM:
i write the java script code for handling the time John Damron said, on December 2, 2008 11:26 AM:
I need a clck that will restart every week... it will count down to sunday @ 9:30 AM and on that time restart for next week can you help me with this? i would be greatful... karthikask said, on December 20, 2008 3:05 AM:
hi thanks Andy McGrath said, on February 4, 2009 12:57 AM:
After constantly searching the web for a whole day this is by far the most straightforward and perfect solution to what I was looking for. Many thanks for the code Dave. Dean said, on February 26, 2009 9:31 AM:
It was very helpful but how do I change the color Zak said, on March 20, 2009 8:02 PM:
I am trying to build a timer much like this, that will allow me to do the following Set a number of days. have the timer count down to the last min up untill that last day once it hits that point it will restart and count down 7 days again, lets say for example i wanted it to end on Monday 9:00pm and on monday it stops for 1 hour then starts back counting from monday at 10:00pm untill 9:00pm is this posible to do? Rafke said, on May 4, 2009 7:18 PM:
Thx, it helped a lot! Harry Balzac said, on May 24, 2009 6:13 PM:
Hello from Calgary ... Thanks for the time-saving advice... Where's the tip-jar? Dave Taylor said, on May 25, 2009 6:47 AM:
Ashitha said, on July 1, 2009 7:49 AM:
Dave, Multiple Countdown Clocks
StartCountDown("clock1","06/27/2010 12:33 PM -0400") junaid said, on August 9, 2009 12:02 PM:
i appriciate that timer .. Abraham said, on August 18, 2009 3:57 PM:
hello sir, I am writing an examination program in ASP.NET that will time student for 30 min after the time elapse the page will move to the next exam page. please how can i achieve this, for my project. thanks very much Sherwin said, on December 28, 2009 8:28 PM:
I was looking at your countdown script above but i have been looking for a script to do the following but can't find one. Can you help me please? I want a countdown script that will count down to midnight server time each day and automatically start over and over each day. As long as it hits midnight it will just start over counting down to midnight again each day. I don't know if it can be done but if you know of any script or have any advice for me i will certainly appreciate it. Govind said, on March 1, 2010 11:38 PM:
Hi Dave, jrp said, on March 13, 2010 5:56 PM:
Hi Dave, I am looking for a countdwn timer like you describe here. My issue is that I need the timer to use the server clock not the user's PC clock as this will be used by people from their homes. Do you have any example PHP code that I could use to accomplish this task?? Thanx! Bobby said, on March 15, 2010 6:09 PM:
Hi, I am using a script on my website (server) (see below) 1. when I go to my website and the page with the countdown script is running, it counts down from 1 hour. But if I refresh the page it starts again. How do I change this so the count down is based on the timer on the server and not the client as it is now? The count down should start as soon as the script is enabled so the count down is shown exactly to all looking at the page, regardless of time zones! 2. Where can I change the count down time in the script? e.g if I want to change the countdown time to 2 hours? function DateStringToDateObject( dateString ) //theDateTime = new Date(); //==================================================================== var rightNow = new Date();
var dtDelim = "-";
// Debug stuff anjali said, on April 4, 2010 9:14 AM:
hi ..i am making the online quiz in jsp...could u tell me hw to insert the counter..like after 10 min the quiz ends...only time involment. Pravin said, on April 30, 2010 5:24 PM:
i have a problem , we are developing a online exam projects now how can we integrate a timer with this. like if our max time for exam is 40 min then after 40 min automatically it should stop the exam and declare the result pravin said, on April 30, 2010 5:30 PM:
hi Dylan said, on August 29, 2010 10:17 PM:
Thanks Dave! Worked a treat Binu said, on October 25, 2010 3:40 AM:
hi frnz.. Arren Zhang said, on May 3, 2011 10:18 PM:
SimpleNTP implementation , hope this can help you. Bruce Henson said, on July 6, 2011 11:13 AM:
I want to use a countdown counter to track quantity remaining based on the quantity entered by a user in a web form once the form is submitted. I have no clue how to do it. Can you help? I'll tip... ahmad balavipour said, on July 18, 2011 12:55 AM:
thanks alot, very good tutorial PandeySrivastav said, on September 21, 2011 2:01 AM:
Re:How do I create a JavaScript countdown timer on my Web page? Thanks a lot!!!!! jaya said, on November 14, 2011 12:19 PM:
I am planning to use date.getTime() javascript function and using it as a sequence number. I have some processing based on this number. I am assuming that this is a 13 digits number. Is there a chance that it will come less or more than 13? Also, if a leading Zero is there, is that going to be truncated? Please respond. Thanks Dave Taylor said, on November 14, 2011 6:00 PM:
Jaya, I asked a Javascript programming geek pal of mine about this, and here's his response: In case this is all they gave you, they're actually instantiating a date object: date = new Date() and calling an instance method "getTime" on it: date.getTime() It's returning epoch time in milliseconds, ie: milliseconds since January 1, 1970 12:00am. It's been 13 digits since 2001, and it will roll over to 14 digits during the evening of Nov 20, 2286. So… probably past the lifespan of the application. Whether or not it's a safe thing to use as a sequencing value, is a matter for people far better at statistics than I. (What are the odds of two users managing to do the same action in the same millisecond? I have no idea.) Ben Whistler said, on December 18, 2011 4:07 AM:
Hi, nice post. We started down this road for our auction timers but ended up using a jquery plugin. Keep the posts coming :) muhammad shakeel said, on January 2, 2012 12:10 PM:
i want to make a javascript from who make a new post in my website. but i was fail to do this plz some help me thangaraj said, on January 4, 2012 1:16 AM:
hi i am creating a online exam project .how submit a form automatically after the count down finishes John said, on January 10, 2012 5:03 AM:
Hi guys, I found here: http://www.flashxml.net/countdown.html a countdown which can be set to use the server time. Looks pretty good and it's very customizable. Hope it will help someone. Luluk Fur said, on January 14, 2012 8:09 AM:
Are peoples here have the free version of full customize countdown Javascript ? I need it ! Priya said, on February 28, 2012 9:47 PM:
Hi there, wii ombouwen said, on May 17, 2012 8:12 AM:
Thanks, I was stuck at the same problem about the timer neelima said, on May 28, 2012 6:25 AM:
we are doing an online exam project please say me how to set a timer of 20 minutes to the exam
I do have a comment, now that you mention it!Check This Out Too... |
Recent Entries
Look for Answers
Recommended
All Our Categories
Apple iPad Help
Articles and Reviews Auctions and Online Shopping Blogs and Blogging Building Web Site Traffic Business and Management Computer and Internet Basics d) None of the Above Facebook Help Google Gmail Help Google Plus Help HTML, JavaScript and Web Site Programming Industry News and Trade Shows iPhone and Cell Phone Help iPod, Sony PSP and MP3 Player Help Kindle Fire Help Mac OS X Help Pay Per Click (PPC) Advertising Pinterest Help Search Engine Optimization (SEO) Shell Script Programming Tech Support Video Help The Writing Business Twitter, LinkedIn and Social Network Help Unix and Linux Help Video Game Tips and Help Windows PC Help Find Me on Google+ ADT on G+ |
I'd just like to point out, because this is javascript, its client side. So it will use whatever system time the user's computer is set at. Not saying your user's will have their local computer's system dates set so bad it will make a difference, but I just wanted to point out its totally on their side. If you have some sort of server side technology at your disposal, such as ASP, ASP.NET, JSP, etc, then you could better control it. Such as by setting seed value and then letting the client side javascript take the count down from there.