【发布时间】:2020-11-16 22:07:01
【问题描述】:
我正在寻找开发模式来为广大国家或不同国家的不同用户处理不同的时区。
我想知道在现有的世界级软件中是否有任何完全被接受和实施的软件。
到目前为止,我的想法是使用特定时区存储用户配置文件并更改后端查询中的所有日期。
后端将接收本地时间的日期,包括 TZ,并将其以 UTC 格式存储在数据库中。
对于检索结果列表,这非常有效,但是对于需要对 10 月份的所有销售额进行分组的查询进行分组,如果您处于负 TZ 或销售额中,您还应该将 9 月 30 日的日期分组如果您在正时区,则为 11 月 1 日。
对于这种情况,是直接使用用户存储的 TZ 并将其减去/添加到使用 select 子句中的一些 db 函数从 db 检索到的日期时间。
我能解释一下吗?
请记住,例如,如果我必须从 9 月 1 日开始检索数据库的一些销售额
【问题讨论】:
-
您的后端接收的是仅日期值(例如
2020-11-16)还是日期时间值(例如2020-11-16 12:34:56)?另外,您是否阅读过the timezone tag wiki 并了解用户时区需要是时区标识符(例如America/New_York)而不是时区偏移量(例如-05:00)?您正在运行哪个数据库平台,您存储数据的字段是什么数据类型? -
感谢@MattJohnson-Pint 的回复,我的问题不在于过滤,我正在做正确的事情,为后端提供具有对应时区的时间戳。我的问题是,只有当我必须按月分组时,才能很好地进行期间过滤,但显示 8 月的销售额(例如 UTC)应该在 9 月分组。感谢您的维基链接
-
如果你想要一个实际的答案,我仍然需要你回答我的问题。
-
我正在使用 Mysql 和字段数据类型 datetime,因为我读过 timestamp 存在严重的性能问题。是的,我理解了区域标识符的事情
-
您错过了第一个问题。你在处理 dates 还是 date+times ?换句话说,是“此订单于2020年11月16日下单”中的订单日期,还是中的订单的确切本地时间+日期+时区“这个订单是在 2020 年 11 月 16 日 12:34:56 在
America/Los_Angeles下的”,还是你收到像2020-11-16T12:34:56-08:00这样的日期+时间+偏移量?这很重要。
标签: node.js reactjs timezone timezone-offset timestamp-with-timezone