我有一些代码,可以检查用户是否在周一至周五的特定时间内(9.00am至17.30pm)。
function checkTime() {
var d = new Date(); // current time
var hours = d.getHours();
var mins = d.getMinutes();
var day = d.getDay();
return day >= 1
&& day <= 5
&& hours >= 9
&& (hours < 17 || hours === 17 && mins <= 30);
}
这可以正常工作,但它根据用户浏览时间检查时间。
我想做的是检查它仅在9.00am -17.30pm英国时间。
因此,如果您在说10.00am(UTC-7)的美国网站/脚本中,您将不在时间检查器之外,因为它将是18.00pm(UTC 1)英国时间。
所以我想我要做的是让用户时区,然后将其转换为英国时间,然后运行我的checkTime()
脚本?
评论中提到的罗里(Rory关于具有日光节省时间过渡的时区,或其他对其时区偏移的更改。
英国的当地时间在GMT(UTC 00:00)和BST(UTC 01:00)之间交替,目前遵循欧盟的过渡规则(上周日的3月至10月的上周日,都在01:00 UTC)。
您当然可以将这些规则核对自己的逻辑进行核对,但是您可能会发现代码过于复杂且难以维护。一种更好的方法是使用为此目的而设计的库。我在这里列出其中的几个。
例如,使用Moments timezone库,这是流行时刻的伴奏库。JS库,您可以简单地执行此操作:
function checkTime() {
// now in the UK
var m = moment.tz("Europe/London");
// use moment.js getters
var hours = m.hour();
var mins = m.minute();
var day = m.day();
// your original logic retained
return day >= 1
&& day <= 5
&& hours >= 9
&& (hours < 17 || hours === 17 && mins <= 30);
}