【发布时间】:2016-10-22 17:29:27
【问题描述】:
我有一些代码可以检查用户是否在周一至周五的特定时间(上午 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)从美国查看站点/脚本,您将不在时间检查器范围内,因为它将是英国时间晚上 18 点(UTC+1)。
所以我想我要做的是获取用户时区,然后将其转换为英国时间,然后运行我的 checkTime() 脚本?
【问题讨论】:
-
相关:stackoverflow.com/questions/1091372/…。棘手的部分是知道英国时间,因为我们全年运行夏令时,因此与格林威治标准时间的差异可能意味着您计算的时间超出 1 小时。我建议您从服务器检索英国时间并在那里检查,而不是捏造客户端解决方案。特别是如果您依赖正确设置的客户端时钟。
-
@RoryMcCrossan:
+new Date()不受夏令时影响,正好返回英国的时间戳…… -
OP 想从客户日期知道英国的时间。您所能得到的只是 GMT 时间(通过减去时区偏移量),而英国在一年中的部分时间运行 BST(即 GMT+1)
-
@RoryMcCrossan:BST 很好,但请记住,所有 Date 值都是 GMT 没有减法,无需担心本地时区,这仅适用于非绑定 toString/toLocaleXXX。 .
-
@BoneStarr - 不,这行不通,因为
offset将是用户的本地时区,不一定是您感兴趣的时区。
标签: javascript jquery date timezone timezone-offset