6
将时间存储在UTC中总是一个好主意吗?还是以本地时间存储更好的情况?
通常,最佳做法是将时间存储在UTC中,如此处和此处所述。 假设有一个重复发生的事件,例如结束时间总是与当地时间相同,例如17:00,无论该时区是否启用了夏令时。并且还要求在特定时区打开或关闭DST时不要手动更改时间。还要求任何其他系统通过API(例如GetEndTimeByEvent)要求结束时间时,都必须以UTC格式发送结束时间。 方法1: 如果决定以UTC存储,则可以将其存储在数据库表中,如下所示。 Event UTCEndTime ===================== ABC 07:00:00 MNO 06:00:00 PQR 04:00:00 对于第一个事件ABC,UTC的结束时间是上午07:00,如果将其转换为从UTC到2012年7月1日的本地时间,则将转换为17:00的本地时间,如果转换为2012年10月10日(日期(DST在该时区为ON的日期),则将导致下午6点,这不是正确的结束时间。 我想的一种可能方法是将DST时间存储在附加列中,并在时区DST ON时使用该时间。 方法2: 但是,如果将其存储为本地时间,例如事件ABC,则它将在任何日期始终为17:00,因为没有从UTC到本地时间的转换。 Event LocalEndTime ======================= ABC 17:00:00 MNO 16:00:00 PQR 14:00:00 应用程序层将本地时间转换为UTC时间,以通过(API GetEndTimeByEvent)发送给其他系统。 在这种情况下,将时间存储在UTC还是一个好主意吗?如果是,那么如何获取恒定的本地时间? 相关问题:是否有充分的理由不使用UTC来存储时间?