我有一个Django应用程序,可以与其他遗留数据库进行大量交互。这些其他数据库都使用本地时间,而不是UTC。我理解Django的时区支持,以及除了与用户交互之外始终使用UTC时间的建议。在这种情况下,我真的需要Django给我系统日期/时间。
在settings.py中
USE_TZ = False
当我从linux命令行运行date
时,我得到(例如):
Tue Mar 15 17:03:42 MDT 2016
另外,当我打开一个常规(非django)python shell并运行
import datetime
str(datetime.datetime.now())
我明白了
'2016-03-15 17:04:55.182283'
但是,当我从Django shell运行相同的命令时(python manage.py shell)
我会提前一个小时得到一个时间:
'2016-03-15 16:07:10.949269'
有什么方法可以让我得到一个日期时间对象,它正好有系统时间,而忽略任何其他时区魔术?
您需要使用
django.utils.timezone
,特别是:来自django docs:
设置
USE_TZ=True
以便django在内部使用时区感知的datetime对象。在
DATABASES
设置中设置TIME_ZONE
,以容纳旧数据库。Django将自动将您的日期时间转换为相应的时区,即,要获得当前时间,它就足够了:注意:
datetime.now()
返回一个原始的datetime对象。别用它。相关问题 更多 >
编程相关推荐