将时区设置为 GB 以供所有人查看
Set timezone to GB for everyone viewing
我有一些代码可以检查用户是否在周一至周五的特定时间(上午 9 点 - 下午 17 点 30 分)内。
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 点到下午 17 点 30 分检查。
因此,如果您在上午 10 点 (UTC-7) 查看来自美国的 site/script,您将不在时间检查器的范围内,因为它是英国时间晚上 18 点 (UTC+1)。
所以我想我想做的是获取用户时区,然后将其转换为英国时间,然后 运行 我的 checkTime()
脚本?
正如 Rory 在评论中提到的,如果您的参考点是特定时区(在本例中为英国时间),那么您将需要逻辑来理解该时区的性质 - 特别是关于时区有夏令时转换,或对其时区偏移量进行其他更改。
英国当地时间在 GMT (UTC+00:00) 和 BST (UTC+01:00) 之间交替,目前遵循欧盟过渡规则(3 月的最后一个星期日至 10 月的最后一个星期日) , 都在 01:00 UTC).
您当然可以将这些规则硬编码到您自己的逻辑中,但您可能会发现代码过于复杂且难以维护。更好的方法是使用为此目的设计的库。 I list several of them here.
例如,使用 moment-timezone library, which is a companion library for the popular moment.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);
}
我有一些代码可以检查用户是否在周一至周五的特定时间(上午 9 点 - 下午 17 点 30 分)内。
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 点到下午 17 点 30 分检查。
因此,如果您在上午 10 点 (UTC-7) 查看来自美国的 site/script,您将不在时间检查器的范围内,因为它是英国时间晚上 18 点 (UTC+1)。
所以我想我想做的是获取用户时区,然后将其转换为英国时间,然后 运行 我的 checkTime()
脚本?
正如 Rory 在评论中提到的,如果您的参考点是特定时区(在本例中为英国时间),那么您将需要逻辑来理解该时区的性质 - 特别是关于时区有夏令时转换,或对其时区偏移量进行其他更改。
英国当地时间在 GMT (UTC+00:00) 和 BST (UTC+01:00) 之间交替,目前遵循欧盟过渡规则(3 月的最后一个星期日至 10 月的最后一个星期日) , 都在 01:00 UTC).
您当然可以将这些规则硬编码到您自己的逻辑中,但您可能会发现代码过于复杂且难以维护。更好的方法是使用为此目的设计的库。 I list several of them here.
例如,使用 moment-timezone library, which is a companion library for the popular moment.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);
}