繁体   English   中英

在Django获取本地系统时间

[英]Get local system time in Django

我有一个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 ,具体来说:

from django.utils.timezone import localtime, now

# get now datetime based upon django settings.py TZ_INFO
localtime(now())

来自django docs

如何与以当地时间存储日期时间的数据库进行交互?

在DATABASES设置中将TIME_ZONE选项设置为此数据库的相应时区。

这对于连接到不支持时区且在USE_TZ为True时不由Django管理的数据库很有用。

设置USE_TZ=True以便django在内部使用时区感知日期时间对象。

DATABASES设置中设置TIME_ZONE ,以容纳旧数据库。 Django会自动将您的日期时间转换为适当的时区,即获取当前时间就足够了:

from django.utils import timezone

now = timezone.now()

注意: datetime.now()返回一个天真的日期时间对象。 不要使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM