Django:与时区混淆datetimefiled?

时间:2014-10-23 00:37:16

标签: python django

修改

我接受@flyingfoxlee的建议

我直接在UTC中保存:

#models.py
datetime = models.DateTimeField(null=True,auto_now=True) 
#settings.py
TIME_ZONE = 'UTC'
USE_TZ = False  #I found USE_TZ = true still save the time with +8 ??? Which should I use??

但在我的postgreSQL数据库中,时间是2014-10-23 09:27:38.157022+08

我用终端打印出来,时间是:

>>> obj.datetime
datetime.datetime(2014, 10, 23, 1, 27, 38, 157022)

我是否正确保存UTC ??? 请指导我谢谢

原始问题:

我想用timezome' Asia / Taipei'

保存变量today

这是我的代码:

dt = datetime.datetime.fromtimestamp(time.time(), pytz.utc)
tz = pytz.timezone('Asia/Taipei')
today = tz.normalize(dt.astimezone(tz)).strftime('%Y-%m-%d')   

abd my django model:

 datetime = models.DateTimeField(null=True,auto_now=False, auto_now_add=False) 

但是当它保存时,数据库会显示2014-10-22 08:00:00+08

如果我更改为today = tz.normalize(dt.astimezone(tz)).strftime('%Y-%m-%d %H:%M:%S')

数据库显示2014-10-23 05:19:01+08

但实时应该是:2014-10-22 21:25:23

为什么不能保存正确的时间? 请指导我如何保存DateTimeField
非常感谢!

1 个答案:

答案 0 :(得分:0)

究竟什么是dt,我认为您应该在utc的日期库中保存日期时间,并将其更改为frontend中的任何时区。 您不需要将dt转换为str来保存日期时间,日期时间对象可以直接保存到数据库中。

+8对象末尾有一个datetime是因为您要将日期时间保存在Asia/Taipei timezone中,如果将其保存在utc中,+8 1}}将消失,将成为你想要的。