【发布时间】:2020-08-20 21:55:27
【问题描述】:
我的脚本是这样的:
function checkDatetime() {
const e = new Date((new Date).toLocaleString("en-US", {
timeZone: "Asia/Jakarta"
}));
return e.getDay() >= 1 && e.getDay() <= 5 && e.getHours() >= 8 && e.getHours() < 17
}
如果 checkDatetime 返回 true,则会显示消息“Available”
如果 checkDatetime 返回 false,则会显示消息“不可用”
我已经对其进行了测试,并且可以正常工作。我在雅加达(印度尼西亚)的职位
但有些人在 18:20 和 22:22 调用该函数并显示“可用”
是否应该显示“不可用”
这是时区问题吗?
更新:
我的另一个解决方案:
function checkDatetime() {
const offsetHours = new Date().getTimezoneOffset() / 60;
const day = new Date();
day.setHours(day.getHours() + offsetHours);
return day.getDay() >= 1 && day.getDay() <= 5 && day.getHours() >= 1 && day.getHours() < 10;
}
【问题讨论】:
-
更新(不可靠地)将时间移动了本地偏移量,因此实际上是 UTC。您也可以使用 getUTCDay 和 getUTCHours 来做同样的事情。提供给 setHours 的值应该是整数,小数值被截断为整数部分。由于许多地方的偏移量不是偶数小时(例如印度部分地区和澳大利亚中部),因此您的调整对它们来说不会是一致的(即使它有用)。
-
@RobG 所以我的第二个脚本不能有效解决这个问题?
标签: javascript jquery date datetime timezone