node.js - 如何设计一条了解一天中时间的快速路线

标签 node.js express heroku momentjs

我正在尝试创建一条功能如下的路线:

移动应用程序将发出请求:GET/ballots/today,仅当时间在美国东部标准时间下午 6:00 至晚上 10:00 之间时,该请求才会返回“今天”的选票。

如果请求是在该时间段之前或之后发出的,则不应返回任何内容。

我正在考虑在 express route 使用 moment 库的 isBetween 方法来检查当前时间是否在该特定日期的下午 6:00 到晚上 10:00 之间。

但是,我无法理解的问题是如何确保服务器始终具有正确的时间(如果这应该成为一个问题)以及与时区无关。

如果重要的话,我计划在 Heroku 上部署。

最佳答案

在 Express 上运行时,Moment 将始终使用服务器时间。大多数云提供商将其服务器时间设置为 UTC。您必须使用 Moment Timezone 提供时区。这是如何实现它的示例。

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

关于node.js - 如何设计一条了解一天中时间的快速路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60067610/

相关文章:

Heroku 的 SSL 端点无法解析

javascript - 无法将响应值从nodejs服务器传递到ajax函数

node.js - 使用谷歌驱动器完成可恢复上传后返回文件ID

node.js - 如何使用 everyauth 进行简单(单步)身份验证?

ruby - 想知道请求是由 heroku 的哪个 dyno 提供的

ruby-on-rails - 如何停止通过 Heroku Scheduler 运行 Rails 任务的 Heroku Dyno?

node.js - meteor 构建--服务器与ROOT_URL

node.js - 匿名函数import/no-anonymous-default-export的意外默认导出

node.js - 使用 $match 和 $lookup 检索数据

mysql - 如何解析node.js,express.js,mysql2中 "rows"对象的数据