我正在写一个玩具物流服务。因此,产品将穿越许多不同的时区,我需要查询活动的严格顺序,以及产品在一天中的哪个时间(例如,太阳最热的时候,1200时发生了什么)。
目前,我正在保存jodatime DateTimes,并试图专门处理它们,但我知道时间非常棘手,我想知道是否需要做其他事情来确保一切正常。
考虑到您正在记录事件发生时的情况(而不是为未来的事件做计划),您可能不需要担心将来发生的时区规则更改。
因此,存储时间戳(例如UTC)以及事件位置的时区ID是合理的。为了简化查询,还可以存储事件发生时的本地时间。请注意,当玩具穿越时区时,可能会在不同的时刻发生多个事件,所有这些事件都发生在同一天的"中午"(但在不同的区域)。您确实需要仔细考虑您真正希望对本地日期/时间值执行哪些查询。
我不熟悉jodatime,但当我需要存储时间时,我总是喜欢使用Epoch时间,因为它很容易操作以获得不同的格式。如果你对此感兴趣,这里有一个转换器网站,我觉得它非常有用:http://www.epochconverter.com/