Create a timer countdown using hours, minutes, and seconds from a future date

I am using code that I found on the Internet that creates a countdown from a specific date. I am trying to edit the code so that it gives me a countdown from the hour, minute and second that I specify from a future date. I can’t just have a code that counts from a certain time, I need it to count down to a specified date in the future. This is important, so if the browser is updated, the countdown does not start, but continues when it is stopped. I will use cookies so that the browser remembers what date in the future was indicated at the first start.

Here is the HTML:

<form name="count"> <input type="text" size="69" name="count2"> </form> 

And here is the javascript:

 window.onload = function() { //change the text below to reflect your own, var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") function countdown(yr,m,d){ var theyear=yr; var themonth=m; var theday=d var today=new Date() var todayy=today.getYear() if (todayy < 1000) todayy+=1900; var todaym=today.getMonth() var todayd=today.getDate() var todayh=today.getHours() var todaymin=today.getMinutes() var todaysec=today.getSeconds() var todaystring=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec futurestring=montharray[m-1]+" "+d+", "+yr var dd=Date.parse(futurestring)-Date.parse(todaystring) var dday=Math.floor(dd/(60*60*1000*24)*1) var dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1) var dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1) var dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1) if(dday==0&&dhour==0&&dmin==0&&dsec==1){ document.forms.count.count2.value=current return } else document.forms.count.count2.value= dhour+":"+dmin+":"+dsec; setTimeout(function() {countdown(theyear,themonth,theday)},1000) } //enter the count down date using the format year/month/day countdown(2012,12,25) } 

I am sure there is extra code, since I only need the hour, minute and second, which I would like to pass to the countdown() function. Year, month and day are not important, but, as I said, this is the code that I am trying to edit, which I found on the Internet. Any help would be greatly appreciated. Thank!

+1
javascript
Oct 23
source share
3 answers

you can use the countdown timer jquery integration is simple and has a number of options to display in different formats ....

+3
Oct 23
source share

You can create a date object for the target time and get the difference with the current date object. Please note that this depends on the fact that the client has a correctly configured clock.

 function timeDiff(target) { function z(n) {return (n<10? '0' : '') + n;} var timeDiff = target - (new Date()); var hours = timeDiff / 3.6e6 | 0; var minutes = timeDiff % 3.6e6 / 6e4 | 0; var seconds = timeDiff % 6e4 / 1e3 | 0; return z(hours) + ':' + z(minutes) + ':' + z(seconds); } alert(timeDiff(new Date(2012,9,23,17,50,0))); 

Run it every second, after a few milliseconds, after the next full second. I will leave it to you.

Edit

What the hell, here's a timer to call it. Just need an element with the identifier "timer" in the document:

 function doCountDown(target) { document.getElementById('timer').innerHTML = timeDiff(target); var lag = 1020 - (new Date() % 100); setTimeout(function(){doCountDown(target);}, lag); } window.onload = function() { doCountDown(new Date(2012,9,23,17,50,0)); } 
+4
Oct 23
source share

What about

 now = new Date(); then = new Date("30 Oct 2013"); time_diff_in_milliseconds = then-now; integer_seconds=(time_diff_in_milliseconds/1000) >>0; minutes = seconds / 60 |0; // another convention to get floor ... etc. 

You can also put the time of day in a string.

 a=new Date('Oct 30 2013 07:55:07'); b=new Date('Feb 28 2000 20:12:33'); ab .. 431350954000 
+2
Oct 23
source share



All Articles