2014-01-24 47 views
-2

我想做一个倒数计时器,倒计时到某个日期和时间。 我希望能够通过在文本框中输入日期和时间(例如2014-01-25, 15:00)或类似的东西,从“管理控制台”设置日期和时间。你可能已经想通了,我不是最好的PHP或JavaScript,我需要的方向,以及我将如何做到这一点。倒数计时器到管理面板设置的日期

任何帮助表示赞赏,因为我在过去的2小时内没有取得任何进展,我试过这样做。

+2

显示您在2个小时内想出的内容。 –

回答

0

要使用像jQuery没有框架做到这一点,你可以做到以下几点:

var MINUTE_IN_MILLISECONDS = 60 * 1000; 
var HOUR_IN_MILLISECONDS = 60 * MINUTE_IN_MILLISECONDS; 
var YEAR_IN_MILLISECONDS = 24 * HOUR_IN_MILLISECONDS; 

var targetDate = new Date('2014-01-25 15:00'); 
var countdownInterval; 

function countdown(){ 
    var currentDate = new Date(); 

    var difference = targetDate.getTime() - currentDate.getTime(); 

    //Countdown has expired, cancel interval and do other tasks here 
    if(difference <= 0) 
    { 
     difference = 0; 
     clearInterval(countdownInterval); 

     //Update button here 
    } 


    var days = Math.floor(difference/YEAR_IN_MILLISECONDS); 
    difference -= days * YEAR_IN_MILLISECONDS; 

    var hours = Math.floor(difference/HOUR_IN_MILLISECONDS); 
    difference -= hours * HOUR_IN_MILLISECONDS; 

    var minutes = Math.floor(difference/MINUTE_IN_MILLISECONDS); 
    difference -= minutes * MINUTE_IN_MILLISECONDS; 

    var seconds = Math.floor(difference/1000); 

    console.log(days + ":" + hours + ":" + minutes + ":" + seconds); 
} 

countdownInterval = setInterval(countdown, 1000); 

这里的Fiddle

+0

你知道计算机科学中存在一个名为['mod'](https://en.wikipedia.org/wiki/Modular_arithmetic)的东西... –

+0

@Derek朕会功夫这简直就是一个简单易懂的阅读实施倒计时的例子。这没有错,只是不同于你的答案。 –

+0

哇我从来没有说过你的错。我只是建议'%'是一个更简单的解决方案,供您使用,而不是计算所有剩余部分。 –

0

充分的论证:http://jsfiddle.net/DerekL/T48SL/

<form> 
    <input type="date" required><input type="time" required> 
    <input type="submit"> 
</form> 
<span></span> 
$("form").on("submit", function (e) { 
    e.preventDefault(); 
    var date = $("input[type=date]").val(), 
     time = $("input[type=time]").val(), 
     targetTime = new Date(date + " " + time), 
     interval = setInterval(function() { 
      $("span").html(
       (((+startingTime - Date.now())/1000)|0) + " seconds left until " + startingTime.toString() + "." 
      ); 
     }, 500); 
}); 

这是相当容易与代数,而不是格式化的几秒钟时间:

//yourTime is in seconds 
(yourTime) % 60   //seconds 
(yourTime/60 |0) % 60 //minutes 
(yourTime/3600 |0) % 24 //hours 
(yourTime/86400 |0)  //days 

/* 
* Explanation: 
* % is mod, it finds the remainder of two numbers. 
* |0 is binary OR, it rounds down a floating number. 
* 
*/ 

利用这种技术,你不需要做一堆减法,并在这个过程中创造了很多的垃圾变量。

+0

1+ Citizen mysterious-downvoter reversal;) –