我是许多网站的内容编辑,最近我不得不在网站的某些技术部分工作。
托管我们网站的服务器每天在新加坡时间下午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";
}
答案 0 :(得分: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.