如何在Django中使用localtime保存日期和时间?

时间:2015-10-19 12:30:08

标签: django python-2.7

所以我正在努力学习Python和Django ......很棒的语言和框架。

那就是说,请原谅我看似非常愚蠢的问题。

我有一个不会在单个时区之外使用的Django项目,因此在UTC中保存内容并在需要时转换为“本地”时区并没有多大意义。

问题是我似乎无法找到正确的“Python / Django”方法,如下所示:

> python manage.py shell
Python 2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.utils import timezone
>>> timezone.localtime(timezone.now())
datetime.datetime(2015, 10, 19, 10, 17, 58, 153065, tzinfo=<DstTzInfo     'America/Sao_Paulo' BRST-1 day, 22:00:00 DST>)
>>> from thingie.models import Thingie
>>>  a=Thingie(field1="teste",field2="12121",field3="112121",field4="904095034",timestamp=timezone.localtime(timezone.now()))
>>> a.save()

目前,这会在我的MySQL数据库中创建一条记录,但时间戳字段记录为UTC时间......

我做错了什么?如何在本地时间保存时间戳?

提前致谢!

修改

根据我对Daniel的回复的评论,使用datetime会在Django中生成警告,这导致我禁用USE_TZ(USE_TZ = False)。这似乎可以解决问题,但我想知道是否存在任何不需要的行为,因为文档建议使用时区支持。

再次感谢!

1 个答案:

答案 0 :(得分:0)

如果您不关心时区,请不要做任何事情;保存它。

a = Thingie(field1="teste", field2="12121", field3="112121", field4="904095034", timestamp=datetime.datetime.now()))

注意,对于时间戳,在字段定义中使用auto_nowauto_now_add选项会更简单,这会自动设置时间。