存储和过滤日期字段与时区无关?

时间:2017-10-08 11:13:38

标签: java web-applications calendar timezone

我有一个可以在全球范围内访问的Web应用程序,用户可以在其中存储注释并根据输入注释时的日期对其进行过滤。

假设我在美国的某个地方有一个Web服务器和数据库。 来自中国的用户于2017年10月7日发表评论(但服务器/ DB日期为10月6日)。因此服务器将其保存为10月6日 现在用户通过过滤器(在UI上)想要获得10月7日输入的评论,他不会得到任何结果。

我独立于服务器和最终用户位置解决此问题的方法

  1. 输入注释时,将服务器上的日期存储到任何一个时区(存储和过滤时),表示UTC。因此,即使服务器是EST时区,也要以UTC时区转换当前时间并存储它
  2. 现在,当用户在UI上输入任何日期进行过滤时,从HTTP请求中获取用户区域设置/时区,并将用户输入的日期(考虑到他的时区)转换为UTC 并根据UTC日期从DB获取结果
  3. 我的理解这种方法独立于服务器和最终用户位置
  4. 示例: -

    1. 中国用户于10月7日凌晨3点(即UTC时间10月6日(晚上7点))发表评论
    2. 纽约用户尝试搜索10月6日的评论。 10月6日(凌晨0点至24点)翻译为10月6日(早上5点)至10月7日(早上5点)。所以我们需要搜索评论 在DB从10月6日(早上5点)到10月7日(早上5点)?
    3. 请告诉我这是否正确或是否有更好/更简单的方法。

0 个答案:

没有答案