1

我是许多网站的内容编辑器,最近我还必须处理网站的一些技术部分。

托管我们网站的服务器每天在新加坡时间下午 4 点 (GMT +8) 重置。我正在寻找一个 Javascript,它将在 SG 时间下午 3.45 左右向用户显示倒计时。这将是一个倒数计时器,它会倒数到下午 4 点,并且会有一条消息说该站点将关闭。下午 4.15 后,倒计时和消息将被删除。

我们的网站是使用 AtHomeNet.com 创建的基本框架创建的;这些页面是 ASP 页面。我无法控制服务器本身(全部由 AHN.com 控制),我也无法访问服务器。我这样说是因为我已经阅读了 StackOverflow 中的一些主题,并且我知道检查服务器时间比检查系统时间要好得多。不幸的是,我记得,Javascript 是客户端的,我不能(由于上述原因)能够为服务器端包含任何内容。

我在网上找了一些脚本;但是,我不确定我应该如何仅在某些时间显示和隐藏消息(即仅在下午 3.45 显示,并在下午 4.15 后隐藏)

非常感谢任何和所有反馈和帮助。

我的代码:

var d = new Date();
var m = d.getMinutes();
var h = d.getHours();

var hShowMsgStart = 15;
var mShowMsgStart = 45;

var hShowMsgEnd = 16;
var mShowMsgEnd = 15;

labelRef.innerText = "The time is now: " + h.toString() + m.toString() + "hrs";

if ((h >= hShowMsgStart && m >= mShowMsgStart) || (h <= hShowMsgEnd && m<=mShowMsgEnd) {
   //alert the user that it is 1545hrs
    labelRef.innerText = "The time is now: " + h.toString() + m.toString() + "hrs. Please note that the site will be temporarily down for 5 minutes from 4pm till 4.15pm SG time. Please save your work and log out before 4pm SG time";
} 
4

1 回答 1

1

请记住,Javascript 使用客户端计算机的内部时钟,因此您无法控制用户所在的时区,除非您使用某些第三方库(但这不是这个问题的意义所在)。

为了实现你想要的,你应该使用 setInterval。

setInterval() 方法将等待指定的毫秒数,然后执行指定的函数,并在每个给定的时间间隔内继续执行该函数。- 来自 w3schools。

一路走来的东西:

    function checkTime() {
       var id = "warningLabel"; // the id of the label you want to use.
       var d = new Date();
       var m = d.getMinutes();
       var h = d.getHours();

       var hShowMsgStart = 15;
       var mShowMsgStart = 45;

       var hShowMsgEnd = 16;
       var mShowMsgEnd = 15;
       var label = document.getElementById(id);
       if ((h >= hShowMsgStart && m >= mShowMsgStart) || (h <= hShowMsgEnd && m <= mShowMsgEnd)) {
           label.style.display = "block";
       } else {
           label.style.display = "none";
       }
       label .innerText = "The time is now: " + h.toString() + m.toString() + "hrs. Please note that the site will be temporarily down for 5 minutes from 4pm till 4.15pm SG time. Please save your work and log out before 4pm SG time";
   }

   setInterval(checkTime, 1000);  // now it will run the checkTime function every second.
于 2013-09-05T05:43:11.790 回答