将时区设置为GB,以便每个人观看



我有一些代码,可以检查用户是否在周一至周五的特定时间内(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);
}

相关内容

  • 没有找到相关文章

最新更新