4

首先让我说我对 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>");
4

4 回答 4

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>")
    }
于 2012-07-18T18:57:00.853 回答
2

如果这个网站允许我评论其他人的答案,我会把这归功于 Giovanni,但由于我还不能评论其他人的工作,所以这里需要改变。

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 个小时。

编辑:看到你的时区问题,这里有一个你可能感兴趣的帖子。

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

于 2012-07-18T19:04:04.783 回答
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在这里。

于 2012-07-18T19:20:26.993 回答
0

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

  window.onload = function() { startCountDown(30,
1000,我的功能);}


函数 startCountDown(i, p, f) { var pause = p; 变量 fn = f;   
var countDownObj = document.getElementById("countDown");

   countDownObj.count = 函数(i){
      //写出计数
      countDownObj.innerHTML = i;
      如果(我 == 0){
      //执行函数
      //fn();
                startCountDown(30, 1000, myFunction); //停止
      返回; } 设置超时(函数(){
      // 重复
      countDownObj.count(i - 1);
      },
      暂停  
      ); } //设置它 countDownObj.count(i); }

函数 myFunction(){};

    </script>
于 2013-10-23T07:58:47.773 回答