2011-12-18 23:32
浏览 65


My question is a simple yet I cannot find a way around it. I need a server time countdown script to run for 10 minutes, run a php file and when the countdown ends restart again. I have read the jQuery scripts but all of them provide me with a countdown to a speciffic date then stop.

Can anyone point me to the right direction to find such a script?

This is what I have

  <style style="text/css">

.lcdstyle{ /*Example CSS to create LCD countdown look*/
font: bold 18px MS Sans Serif;
padding: 3px;

.lcdstyle sup{ /*Example CSS to create LCD countdown look*/
font-size: 80%


<script type="text/javascript">

function cdLocalTime(container, servermode, offsetMinutes, targetdate, debugmode){
if (!document.getElementById || !document.getElementById(container)) return
var servertimestring=(servermode=="server-php")? '<? print date("F d, Y H:i:s", time())?>' : (servermode=="server-ssi")? '<!--#config timefmt="%B %d, %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" -->' : '<%= Now() %>'
this.localtime=this.serverdate=new Date(servertimestring)
this.targetdate=new Date(targetdate)
this.debugmode=(typeof debugmode!="undefined")? 1 : 0
this.localtime.setTime(this.serverdate.getTime()+offsetMinutes*60*1000) //add user offset to server time

var thisobj=this
setTimeout(function(){thisobj.updateTime()}, 1000) //update time every second

cdLocalTime.prototype.displaycountdown=function(baseunit, functionref){

var thisobj=this
var debugstring=(this.debugmode)? "<p style=\"background-color: #FCD6D6; color: black; padding: 5px\"><big>Debug Mode on!</big><br /><b>Current Local time:</b> "+this.localtime.toLocaleString()+"<br />Verify this is the correct current local time, in other words, time zone of count down date.<br /><br /><b>Target Time:</b> "+this.targetdate.toLocaleString()+"<br />Verify this is the date/time you wish to count down to (should be a future date).</p>" : ""

var timediff=(this.targetdate-this.localtime)/1000 //difference btw target date and current date, in seconds
if (timediff<0){ //if time is up
var oneMinute=60 //minute unit in seconds
var oneHour=60*60 //hour unit in seconds
var oneDay=60*60*24 //day unit in seconds
var dayfield=Math.floor(timediff/oneDay)
var hourfield=Math.floor((timediff-dayfield*oneDay)/oneHour)
var minutefield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour)/oneMinute)
var secondfield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour-minutefield*oneMinute))
if (this.baseunit=="hours"){ //if base unit is hours, set "hourfield" to be topmost level
else if (this.baseunit=="minutes"){ //if base unit is minutes, set "minutefield" to be topmost level
else if (this.baseunit=="seconds"){ //if base unit is seconds, set "secondfield" to be topmost level
var secondfield=timediff
this.container.innerHTML=debugstring+this.formatresults(dayfield, hourfield, minutefield, secondfield)
setTimeout(function(){thisobj.showresults()}, 1000) //update results every second

/////CUSTOM FORMAT OUTPUT FUNCTIONS BELOW//////////////////////////////

//Create your own custom format function to pass into cdLocalTime.displaycountdown()
//Use arguments[0] to access "Days" left
//Use arguments[1] to access "Hours" left
//Use arguments[2] to access "Minutes" left
//Use arguments[3] to access "Seconds" left

//The values of these arguments may change depending on the "baseunit" parameter of cdLocalTime.displaycountdown()
//For example, if "baseunit" is set to "hours", arguments[0] becomes meaningless and contains "n/a"
//For example, if "baseunit" is set to "minutes", arguments[0] and arguments[1] become meaningless etc

//1) Display countdown using plain text
function formatresults(){
if (this.timesup==false){//if target date/time not yet met
var displaystring="<span style='background-color: #CFEAFE'>"+arguments[2]+" minutes "+arguments[3]+" seconds</span> left until launch time"
else{ //else if target date/time met
var displaystring="Launch time!"
return displaystring

//2) Display countdown with a stylish LCD look, and display an alert on target date/time
function formatresults2(){
if (this.timesup==false){ //if target date/time not yet met
var displaystring="<span class='lcdstyle'>"+arguments[2]+" <sup>minutes</sup> "+arguments[3]+" <sup>seconds</sup></span> left until launch time"
else{ //else if target date/time met
var displaystring="" //Don't display any text
alert("Launch time!") //Instead, perform a custom alert
return displaystring


<div id="cdcontainer"></div>

 <script type="text/javascript">
 //cdLocalTime("ID_of_DIV_container", "server_mode", LocaltimeoffsetMinutes, "target_date", "opt_debug_mode")
 //cdLocalTime.displaycountdown("base_unit", formatfunction_reference)

 //Note: "launchdate" should be an arbitrary but unique variable for each instance of a countdown on your page:

 var launchdate=new cdLocalTime("cdcontainer", "server-php", 0, "April 28, 5012 00:05:00", "debugmode")
 launchdate.displaycountdown("days", formatresults2)

Any ideas?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • dongmei8511 2012-02-24 02:22

    This is the chunk that initializes the clock to 30 minutes on page load:

    $date = date('i');
    $sec = date('s');
    $diff = ($date < 30) ? 1800 - (($date * 60) + $sec) : 3600 - (($date * 60) + $sec); //set diff to run split on the half hour.
    $hld_diff = $diff;

    What's happening here is

    $date = date('i') //is taking the minutes portion of the current time
    $sec = date('s') //is taking the seconds portion of the current time

    The next line is saying if the number of minutes is less than 30, set $diff to 1800 seconds (i.e. 30 minutes) minus the current time minutes and seconds. In other words - set the $diff value to the number of seconds until the current time will hit 00 mins 00 secs. If the number of minutes is greater than or equal to 30, do a similar thing but setting $diff to the number of minutes and seconds until the current time minutes and seconds reaches 30 and 0 respectively.

    So if you want to use this same code but want to set it to 10 minutes, first you have to decide what number of minutes on the clock you want the countdown to end. To keep it simple we'll say it will end on 0, 10, 20, 30, 40, and 50.

    Therefore you could do something like this:

    if($date < 10)
      $diff = 600 - (($date * 60) + $sec);
    else if($date < 20)
      $diff = 1200 - (($date * 60) + $sec);
    else if($date < 30)
      $diff = 1800 - (($date * 60) + $sec);
    else if($date < 40)
      $diff = 2400 - (($date * 60) + $sec);
    else if($date < 50)
      $diff = 3000 - (($date * 60) + $sec);
      $diff = 3600 - (($date * 60) + $sec);

    That should be all you need (unless I've overlooked something)

    解决 无用
    打赏 举报

相关推荐 更多相似问题