修改
我接受@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
非常感谢!
答案 0 :(得分:0)
究竟什么是dt
,我认为您应该在utc
的日期库中保存日期时间,并将其更改为frontend
中的任何时区。
您不需要将dt转换为str
来保存日期时间,日期时间对象可以直接保存到数据库中。
+8
对象末尾有一个datetime
是因为您要将日期时间保存在Asia/Taipei timezone
中,如果将其保存在utc
中,+8
1}}将消失,将成为你想要的。