【问题标题】:Convert datetime to UTC before storing in DB?在存储到数据库之前将日期时间转换为 UTC?
【发布时间】:2014-07-03 19:27:50
【问题描述】:

我有一个可以在多个时区运行的应用程序。我需要应用程序能够说“在 2015 年 4 月 12 日晚上 10 点在America/New York 时区执行此操作,并且每 30 天重复一次。” (和类似的)。

如果我在 PST 中从用户那里获得日期时间,我是否应该在转换为 UTC 后将日期时间存储在数据库中?

优点:更易于管理,DB 中的每个日期时间都是 UTC。 缺点:不能考虑夏令时。 (我认为)。

【问题讨论】:

标签: python django datetime timezone


【解决方案1】:

你是说 UTC?

数据库应处理有关时间/时区的所有逻辑。 您需要为数据库提供正确的时区,然后数据库存储它并将其提供给客户端请求的时区。 例如postgresql中的类型:here

你的数据库是什么?

【讨论】:

  • 谢谢,改为UTC。我正在使用 postgres。
  • 这样你就可以使用 postgres 的时区了。
【解决方案2】:

是的,您应该以 UTC 格式将所有内容存储在您的数据库中。

我不知道你为什么说你无法应付夏令时。相反,任何好的时区库——比如pytz——都能够将UTC转换为任何时区的正确时间,同时考虑到夏令时。

【讨论】:

  • 例如:上午 11 点 CA 每个月的 10 日不会是每个月的 UTC 时间。可能是下午 6 点或下午 5 点,具体取决于 DST 是否生效。
猜你喜欢
  • 2011-04-17
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 2013-07-09
  • 2014-07-23
  • 1970-01-01
  • 2021-07-17
  • 2021-12-31
相关资源
最近更新 更多