【问题标题】:How can i remove the timezone offset from datetime in python如何从 python 中的 datetime 中删除时区偏移量
【发布时间】:2015-02-03 05:07:38
【问题描述】:

我在我的代码中使用 delorean。

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

在数据库中它是这样存储的

2014-12-04 18:15:00+00`

因为 django 以 UTC 存储在数据库中

现在如何根据当前时区获取日期时间

我试过了

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

【问题讨论】:

    标签: python django datetime


    【解决方案1】:

    您可以为此使用Django's utilities

    from django.utils.timezone import localtime
    
    localtime(obj.start_time)
    

    这会将其转换为当前时区中的datetime(默认为TIME_ZONE)。

    【讨论】:

    • 我可以用时区做所有事情吗?我不明白为什么 django 向我们推荐pytz。 django utils 不能做的事情,pytz 可以做
    • @KKJOJ:Django 将在可用时使用pytz,因为它可以比 Python 的内置工具进行更准确的转换。这是因为,与 Python 不同,它包含一个关于时区的事实数据库,这可能很复杂。这就是 Python 计划在未来版本中集成 pytz 的原因:请参阅 PEP 431
    猜你喜欢
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2021-09-17
    • 2020-02-24
    • 2021-04-11
    • 2015-05-11
    相关资源
    最近更新 更多