Как спроектировать маршрут Express, который знает время суток - PullRequest
1 голос
/ 05 февраля 2020

Я пытаюсь создать маршрут, который функционирует следующим образом:

Мобильное приложение отправит запрос: GET /ballots/today, который должен возвратить бюллетень ТОЛЬКО для "сегодня", если время находится в интервале от 6 : 00:00 EST - 22:00 EST.

Если запрос сделан до ИЛИ после этого периода, он не должен ничего возвращать.

Я рассматриваю вопрос об использовании moment библиотеки isBetween метод в маршруте express, чтобы проверить, находится ли текущее время между 18:00 и 22:00 этого указанного c дня.

Однако проблема, которую я не могу понять, заключается в том, как убедиться, что Сервер всегда имеет правильное время (если это даже должно вызывать беспокойство), а также имеет отношение c к часовым поясам.

Если это имеет значение, я планирую развернуть на Heroku.

1 Ответ

1 голос
/ 05 февраля 2020

Момент всегда будет использовать время сервера при запуске на express. У большинства облачных провайдеров время сервера установлено на UT C. Вам нужно будет указать часовой пояс, используя Часовой пояс момента . Вот пример того, как этого добиться.

//set the start and end times for today EST
const start = moment.tz("America/New_York").format("YYYY-MM-DD") + " 18:00";
const end = moment.tz("America/New_York").format("YYYY-MM-DD") + " 22:00";

//convert the times to moments so we can do a compare
const startMoment = moment.tz(start, "America/New_York");
const endMoment = moment.tz(end, "America/New_York");

const isBetween = moment.tz("America/New_York").isBetween(startMoment, endMoment);

if (isBetween) {
  //return ballot
}
...