gpt4 book ai didi

python - 使用 python/django 进行日期时间本地化

转载 作者:行者123 更新时间:2023-12-01 22:57:13 25 4
gpt4 key购买 nike

我正在尝试解析 RSS 提要。 Feed 中的条目包含日期元素,例如:

<dc:date>2016-09-21T16:00:00+02:00</dc:date>

使用 feedparser,我尝试这样做:

published_time = datetime.fromtimestamp(mktime(entry.published_parsed))

但问题是我似乎在数据库中存储了错误的时间。在这种特殊情况下,日期时间存储为:

2016-09-21 13:00:00

...当我预计 14:00 时 - 正确的 UTC 时间。

我认为问题出在我们的 django 设置中,我们有:

TIME_ZONE = 'Europe/Berlin'

因为当我切换到:

TIME_ZONE = 'UTC'

...数据时间存储为正确的 UTC 时间:

2016-09-21 14:00:00

有没有办法保持 django 设置不变,但正确解析和存储此日期时间,而不影响 django 时区设置?

编辑:也许这样更清楚......

print entry.published_parsed
published_time = datetime.fromtimestamp(mktime(entry.published_parsed))
print published_time
localized_time = pytz.timezone(settings.TIME_ZONE).localize(published_time, is_dst=None)
print localized_time

time.struct_time(tm_year=2016, tm_mon=9, tm_mday=21, tm_hour=14, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=265, tm_isdst=0)
2016-09-21 15:00:00
2016-09-21 15:00:00+02:00

最佳答案

feedparser 的 entry.published_parsed无论输入时间字符串是什么,始终是 utc 时间元组。获取时区感知 datetime对象:

from datetime import datetime

utc_time = datetime(*entry.published_parsed[:6], tzinfo=utc)

哪里utc是一个 tzinfo 对象,例如 datetime.timezone.utc , pytz.utc ,或者只是您的custom tzinfo (for older python versions) .

您不应该将 utc 时间传递给 mktime()预计本地时间。同样的错误:Have a correct datetime with correct timezone .

确保USE_TZ=True这样 django 就可以在任何地方使用感知的日期时间对象。给定一个时区感知的日期时间对象,django 应该将其正确保存到数据库,无论您的 TIME_ZONE or timezone.get_current_timezone() are

关于python - 使用 python/django 进行日期时间本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34273361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com