【问题标题】:Django: How to retrieve datetime as timezone-awareDjango:如何检索日期时间作为时区感知
【发布时间】:2012-03-15 23:29:13
【问题描述】:

在我的程序中,我保存了一个时区感知(ISO8601 和 Z)日期时间:

param.updated=iso8601.parse_date(updated)
param.save

后来,我检索它做一个比较:

if (newparam.update > Parameter.objects.get(id=id).updated):
....

结果:

TypeError: can't compare offset-naive and offset-aware datetimes

我做错了什么?当我保存或检索时,我是否失去了时区意识?如何恢复?

Python 2.6.x、Django 1.3

【问题讨论】:

  • 哎呀,我撒谎了。那里有一个偷偷摸摸的额外“get_local_time”转换。
  • 您使用的是哪个数据库?大多数数据库将时间戳保存为很长的(表示自一个纪元以来数据的毫秒数。
  • SQLite。你怎么知道?使用 Squirrel,我看到了格式化的时间 - 你如何看到原始内容?
  • 仍在等待帮助 django 1.3 处理时区的解决方案...

标签: python django datetime timezone


【解决方案1】:

Django 1.4 支持时区,请查看this

【讨论】:

  • 哦,很好。很高兴知道。我可能无法立即转换项目,但仍然如此。另外,在发现上面有额外的时区转换之后,我后来发现时区支持无论如何都有点坏了。教训:使用 pytz.timezone.localize(),而不仅仅是 datetime.astimezone()
  • -1 因为将 django 升级到 1.4 对于大多数生产案例来说是不切实际的;它在开发方面涉及大量时间和资源(因此,金钱),尤其是。代码库足够大的地方;有时它就是做不到,尤其是。当您无权升级服务器时...
  • @Optimus 不真实。我们将几个非常大的 django 应用程序从 1.3 升级到 1.4,没有任何问题,也没有额外的更改。
  • 事实上我无法更新我公司服务器运行的堆栈,(这涉及说服很多人的漫长而复杂的过程,最终他们甚至可能不会被说服...) 并且升级 django 只是想拥有一个时区感知网站是一种矫枉过正...
猜你喜欢
  • 1970-01-01
  • 2013-07-02
  • 2020-11-20
  • 1970-01-01
  • 2019-01-18
  • 2017-06-26
  • 2015-02-06
  • 1970-01-01
  • 2016-09-28
相关资源
最近更新 更多