2012-07-18 89 views
3

让我先说我对JavaScript没有深入的了解,但我知道如何使用我的方法来编写足够的页面小脚本。我的客户需要我为网站执行以下操作:如何创建在特定时间复位的倒计时时间

  1. 在计算机上查找用户的当地时间。
  2. 以当地时间为准,并从下午6点开始减去。
  3. 在倒计时中显示那个时间,或者只是一个声明,让用户知道当天发货还剩多少时间。
  4. 下午6点之后,时间重置或消失,直到下一个工作日。

到目前为止,我已经能够创建从本地计算机获取时间的逻辑。我认为我可以使用datejs,但它不会计算一天中的小时数。

下面是当前代码我有:

var currentTime = new Date() 
var hours = currentTime.getHours() 
var minutes = currentTime.getMinutes() 

var suffix = "AM"; 
if (hours >= 12) 
{ 
    suffix = "PM"; 
    hours = hours - 12; 
} 

var suffix = "AM"; 

if (hours >= 12) 
{ 
    suffix = "PM"; 
    hours = hours - 12; 
} 

if (hours == 0) 
{ 
    hours = 12; 
} 

if (minutes < 10) 
    minutes = "0" + minutes; 

document.write("<b>" + hours + ":" + minutes + " " + suffix + "</b>"); 
+1

除了任何其他测试你在做什么,请记住测试夏令日期,否则'X hours'输出可能应保持+/- 1小时 – andyb 2012-07-18 19:39:05

回答

2

如果这个网站将让我对别人的答案发表评论我想给信贷的这乔瓦尼,但由于我还不能评论其他人的工作,所以这里需要改变。

var currentTime = new Date() 
var hours = currentTime.getHours() 
var minutes = currentTime.getMinutes() 

var suffix = "AM"; 

if (minutes < 10) 
minutes = "0" + minutes 

if (hours >= 18) 
{ 
document.write("You're too late for next day shipping!"); 
} 
else 
{ 
var hoursLeft = 17 - hours; 
var minsLeft = 60 - minutes; 
if(minsLeft==60){ 
    minsLeft=0; 
    hoursLeft++; 
} 

document.write("<b> You've got " + hoursLeft + " and " + minsLeft + " minutes left to qualify for next day shipping! </b>") 
} 

这样做的原因是,谁是早上5点订货的人可能会看到觉得他们必须在一个小时内提交他们的运输是下一天的时候,其实他们有在未来13个小时。

编辑:看到您的时区关注和here是一个可能会让你感兴趣的帖子。

编辑2:发布了错误的链接。正确的一个现在应该起来,尽管它可能有点过时的答案。

+0

Scott我刚刚测试了你的代码,当我改变了我的时间时它就工作了。再次感谢您和Giovanni的帮助。 – 2012-07-18 19:22:03

+0

@NinaMorena没问题! – 2012-07-18 19:27:06

+1

如果当前时间为“新日期(2012,6,18,0,0,0,0)”,则输出显示“您剩余17分钟和60分钟”而不是18小时。 – andyb 2012-07-18 19:36:37

3

如何:

var currentTime = new Date() 
var hours = currentTime.getHours() 
var minutes = currentTime.getMinutes() 

var suffix = "AM"; 
if (hours >= 12) { 
suffix = "PM"; 
hours = hours - 12; 
    } 


if (minutes < 10) 
minutes = "0" + minutes 

if (suffix == "PM" && hours >= 6) 
    { 
document.write("You're too late for next day shipping!"); 
} 
    else 
    { 
    var hoursLeft = 5 - hours; 
var minsLeft = 60 - minutes; 
    document.write("<b> You've got " + hoursLeft + " hours and " + minsLeft + " minutes left to qualify for next day shipping! </b>") 
    } 
+0

这假定客户处于同一时区,这不是一个安全的假设。如何处理JavaScript中的时区偏移...我不确定。 – 2012-07-18 18:58:41

+0

@ Giovanni B:您必须获取客户位置(地理位置),然后选择正确的时区。 – atlavis 2012-07-18 19:07:12

+0

完美!非常感谢GiovanniB – 2012-07-18 19:14:39

0

我昨天也解决了类似的事情,所以这很容易。下面是javascript代码:

function start_onload(last_hour){ 
    var timeout_message = document.getElementById('timeout_message'); 
    var currentTime = new Date(); 
    var hours = currentTime.getHours(); 
    var minutes = currentTime.getMinutes(); 
    var seconds = currentTime.getSeconds(); 
    var expire_time = 0; // in seconds 
    if (hours<last_hour) { 
     expire_time += (last_hour-hours-1)*3600; 
     expire_time += (59-minutes)*60; 
     expire_time += (59-seconds); 
    } 
    else { 
     timeout_message.innerHTML = 'It\'s after '+last_hour+' o\'clock!'; 
     return; 
    } 
    var expire_time = currentTime.getTime() + 1000*expire_time; 
    //console.log(expire_time, hours, minutes, seconds, expire_time); 
    function countdown_session_timeout() { 
     var current_time = new Date().getTime(); 
     var remaining = Math.floor((expire_time - current_time)/1000); 
     if (remaining>0) { 
      hours = Math.floor(remaining/3600); 
      minutes = Math.floor((remaining - hours*3600)/60); 
      seconds = remaining%60; 
      timeout_message.innerHTML = 'Countdown will stop in '+ hours + ' hours ' + minutes + ' min. ' + seconds + ' sec.'; 
      setTimeout(countdown_session_timeout, 1000); 
     } else { 
      timeout_message.innerHTML = 'Time is up!'; 
     } 
    } 
    countdown_session_timeout(); 
} 

完整剧本@pastebin.com在这里。

0

这是一个简单的倒数计时器,从功能运行到结束时30秒开始。到达0后,自动重置计数器。它再次进入到30二,这个过程一直持续在一个循环

 window.onload = function() { startCountDown(30, 
1000, myFunction); } 


function startCountDown(i, p, f) { var pause = p; var fn = f; 
var countDownObj = document.getElementById("countDown"); 

    countDownObj.count = function(i) { 
     //write out count 
     countDownObj.innerHTML = i; 
     if (i == 0) { 
     //execute function 
     //fn(); 
       startCountDown(30, 1000, myFunction);  //stop 
     return; } setTimeout(function() { 
     // repeat 
     countDownObj.count(i - 1); 
     }, 
     pause 
    ); } //set it going countDownObj.count(i); } 

function myFunction(){}; 

</script>