2014-12-05 65 views
0

我在我的代码中使用了delorean。我如何从python中的datetime中删除时区偏移

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

now = Delorean(timezone=settings.TIME_ZONE).datetime

start = Delorean(datetime.combine(now.date(), rule.start_time), timezone=settings.TIME_ZONE).datetime

它打印这样

2014-12-05 05:15:00+11:00

在它存储这样

数据库在UTC

2014-12-04 18:15:00+00因为Django的专卖店在数据库

现在怎么能根据当前时区,我得到的日期时间

我想这

Delorean(obj.start_time, timezone=settings.TIME_ZONE).datetime它显示该

2014-12-04 19:00:00+00:00

即使obj.start_time还打印2014-12-04 19:00:00+00:00

我怎样才能得到这个

2014-12-05 05:15:00+11:00

回答

3

您可以使用Django's utilities这一点。

from django.utils.timezone import localtime 

localtime(obj.start_time) 

这将其转换为datetime在当前时区(这是TIME_ZONE默认情况下)。

+0

我可以做所有与时区的东西。我不明白为什么Django推荐给我们'pytz'。 django utils不能做什么事情,可以通过'pytz'完成 – user3214546 2014-12-05 05:04:31

+0

@KKJOJ:Django在可用时会使用'pytz',因为它可以比Python的内置工具做更准确的转换。这是因为,与Python不同的是,它包含一个关于时区的事实数据库,这可能很复杂。这就是为什么Python计划在未来版本中集成'pytz':参见[PEP 431](https://www.python.org/dev/peps/pep-0431/)。 – 2014-12-05 05:19:05

相关问题