【问题标题】:Calculate datetime between client and server (Node JS)计算客户端和服务器之间的日期时间(Node JS)
【发布时间】:2020-05-26 04:25:58
【问题描述】:

我有一个应用程序为每个加入的成员使用订阅。我在日期和与之相关的计算方面遇到了一些问题。例如,假设一个成员于 2020 年 2 月 10 日 10:00 加入。当用户向服务器提交请求以处理订阅(服务器使用 UTC)时,正在计算的日期是 2020 年 2 月 10 日 16:00(因为我距 UTC 时间为 -6:00 小时)。这种情况在这一点上是可以的,因为日期仍然是相同的(无论时间如何)。但是,如果我们在用户加入时复制这种情况,例如 2020 年 2 月 10 日 19:00,当收到请求并计算日期时,结果是 2020 年 2 月 11 日 01:00,这会产生错误在发票中,因为发票的开票日期错误(一天后)。实现这一点的最佳方法是什么?我已经阅读了很多这个主题,但是大多数页面和问题都以另一种方式相关,服务器到客户端,解析格式日期以显示给用户。 我有几个与此过程相关的问题。

  1. 我应该将 UI 的日期发送到 API 吗?或时区和 基于此,计算 API 中的日期? (因为服务器有 UTC)
  2. Moment.js 库有办法解决这个问题,还是应该更好地使用使用 Date 的 vanilla Javascript?
  3. 请求是否有任何 HTTP 标头来处理时间或日期?

【问题讨论】:

    标签: node.js date timestamp timezone utc


    【解决方案1】:

    这真的取决于你想要什么样的行为。在尝试解决任何问题之前,请仔细考虑并确定计费日期的确切要求。

    • 用户的时区是否相关?如果是这样,您可能需要知道用户的时区是什么。即使它们使用相同的 UTC 时间点,您也可能会为不同的发票分配不同的日期。您的企业可能会对为什么有些客户的发票日期早于或晚于工作日感到困惑。
    • 或者贵公司的时区更相关?许多企业都是这样工作的。您的所有发票都将对齐,但有些客户可能会对为什么他们的发票日期早于或晚于当前日期感到困惑。
    • 或者,对于在世界各地设有办事处的企业来说,有些客户可能会捕捉到附近办事处的时区。

    只有您和您的公司才能决定这一点。我可能没有在这里考虑其他选择。这是一个商业决策,而不是技术决策。

    关于你的三个问题:

    1. 这取决于您上面的决定。
    2. 库是简化代码的好主意,但它们不是硬性要求。如果您知道自己在做什么,您可以使用Date API,但您可能会发现库更易于使用。此外,Moment 处于维护模式。对于新的开发,Moment 团队建议您使用Luxon 而不是 Moment。还有其他流行的现代图书馆,包括date-fnsjs-Joda
    3. date 标头,但这对您没有帮助。

    【讨论】:

    • 感谢您的回复马特,我真的很感激。这对我做出决定有很大帮助。
    猜你喜欢
    • 2018-12-12
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多