Python如何在django中获得时区感知日期

use*_*546 17 python django timezone datetime

我在python django中使用delorean进行日期时间计算.

http://delorean.readthedocs.org/en/latest/quickstart.html

这就是我正在使用的

now = Delorean(timezone=settings.TIME_ZONE).datetime
todayDate = now.date()
Run Code Online (Sandbox Code Playgroud)

但我得到了这个警告

RuntimeWarning: DateTimeField start_time received a naive datetime (2014-12-09 00:00:00) while time zone support is active.
Run Code Online (Sandbox Code Playgroud)

我想知道如何让它意识到

我也试过这个

__CODE__ 然后我明白了

__CODE__

Kev*_*nry 40

目前尚不清楚你是否试图最终得到一个date对象或一个datetime对象,因为Python没有"时区感知日期"的概念.

要获取date与当前时区中当前时间对应的对象,您可以使用:

# All versions of Django
from django.utils.timezone import localtime, now
localtime(now()).date()

# Django 1.11 and higher
from django.utils.timezone import localdate
localdate()
Run Code Online (Sandbox Code Playgroud)

那就是:你datetime在UTC中获得当前时区感知; 你将它转换为当地时区(即TIME_ZONE); 然后从中获取日期.

如果你想获得datetime当前时区当前日期00:00:00对应的对象,你可以使用:

# All versions of Django
localtime(now()).replace(hour=0, minute=0, second=0, microsecond=0)

# Django 1.11 and higher
localtime().replace(hour=0, minute=0, second=0, microsecond=0)
Run Code Online (Sandbox Code Playgroud)

基于这个和你的另一个问题,我认为你对Delorean包裹感到困惑.我建议坚持使用Django和Python的日期时间功能.