我有一个可以在全球范围内访问的Web应用程序,用户可以在其中存储注释并根据输入注释时的日期对其进行过滤。
假设我在美国的某个地方有一个Web服务器和数据库。
来自中国的用户于2017年10月7日发表评论(但服务器/ DB日期为10月6日)。因此服务器将其保存为10月6日
现在用户通过过滤器(在UI上)想要获得10月7日输入的评论,他不会得到任何结果。
我独立于服务器和最终用户位置解决此问题的方法
- 输入注释时,将服务器上的日期存储到任何一个时区(存储和过滤时),表示UTC。因此,即使服务器是EST时区,也要以UTC时区转换当前时间并存储它
- 现在,当用户在UI上输入任何日期进行过滤时,从HTTP请求中获取用户区域设置/时区,并将用户输入的日期(考虑到他的时区)转换为UTC
并根据UTC日期从DB获取结果
- 我的理解这种方法独立于服务器和最终用户位置
醇>
示例: -
- 中国用户于10月7日凌晨3点(即UTC时间10月6日(晚上7点))发表评论
- 纽约用户尝试搜索10月6日的评论。 10月6日(凌晨0点至24点)翻译为10月6日(早上5点)至10月7日(早上5点)。所以我们需要搜索评论
在DB从10月6日(早上5点)到10月7日(早上5点)?
醇>
请告诉我这是否正确或是否有更好/更简单的方法。