Должен ли день и час проверять часовой пояс? - PullRequest
0 голосов
/ 30 апреля 2020

Мой код для проверки дня и часа, например:

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

Нужно ли проверить часовой пояс, как это?

1 Ответ

3 голосов
/ 30 апреля 2020

Ваш первый фрагмент кода уже правильный, потому что getHours и getDay уже работают в местном часовом поясе. Согласно документации MDN Date :

Примечание. Важно помнить, что, хотя значение времени в основе объекта Date равно UT C, основа c методы извлечения даты и времени или все их компоненты работают в местном часовом поясе (то есть в хост-системе) и смещении.

Аналогично спецификациям ECMAScript (например, ECMA 262, 2015) редакция ) описать поведение как проходящее через абстрактную операцию LocalTime:

Абстрактная операция LocalTime с аргументом t преобразует t из UT C в местное время

...