javascript - 检查日期和时间是否需要检查时区?

标签 javascript jquery date timezone timezone-offset

我的代码检查日期和时间如下:

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;
}

有必要这样检查时区吗?

最佳答案

您的第一段代码已经正确,因为 getHoursgetDay 已经在本地时区运行。根据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/

相关文章:

javascript - 如何停止嵌套组件分派(dispatch) redux 操作的事件冒泡?

javascript - 需要提高找到最早等于给定总和的对的函数的性能

javascript - 强制运行 .change() 函数 - jQuery

JAVA日期转换

java - 如何从 Java 中的字符串/文件名中提取数字?

java - 在java中生成UTC时间

javascript - 选择选项更改时如何更改值?

javascript - 如何修复 node.js 上的 crypto.pbkdf2 错误

javascript - 单击 `add_button` 后如何检查我的表单是否有效,如果无效则更改输入/选择的颜色?

javascript - 防止在时间范围内对同一 url 进行多次 AJAX 调用