我的代码检查日期和时间如下:
function checkDay() {
var day = new Date();
if (day.getDay() >= 1 && day.getDay() <= 5 && day.getHours() >= 9 && day.getHours() < 17) {
return true;
} else {
return false;
}
}
我想要每周一到周五的 9 点到 17 点,这是真的。除此之外,这是错误的
我已经测试过了,它有效。是否需要检查时区?
我在印度尼西亚的位置(GMT + 7)
如果我实现时区,它就像这样:
function checkDay() {
const offsetHours = new Date().getTimezoneOffset() / 60;
const day = new Date();
day.setHours(day.getHours() + offsetHours);
return day.getDay() >= 1 && day.getDay() <= 5 && day.getHours() >= 2 && day.getHours() < 10;
}
有必要这样检查时区吗?
最佳答案
您的第一段代码已经正确,因为 getHours
和 getDay
已经在本地时区运行。根据MDN Date documentation :
Note: It's important to keep in mind that while the time value at the heart of a Date object is UTC, the basic methods to fetch the date and time or its components all work in the local (i.e. host system) time zone and offset.
同样,ECMAScript 规范(例如 ECMA 262, 2015 edition )将行为描述为通过 LocalTime
抽象操作:
The abstract operation LocalTime with argument t converts t from UTC to local time
关于javascript - 检查日期和时间是否需要检查时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61518144/