【发布时间】:2015-03-14 10:32:26
【问题描述】:
我遇到了这个确切的issue,但我不知道如何在我的情况下实现解决方案。
圭多说
解决方案是从之后的时间完全删除 tzinfo 转换为 UTC。
这是我尝试过的:
date_time = parser.parse(i.pubDate.text)
news.publication_date = date_time.replace(tzinfo=None).date()
我得到了同样的错误:
NotImplementedError: DatetimeProperty publication_date_time can only support UTC. Please derive a new Property to support alternative timezones.
所以看来我必须先将日期转换为 UTC。在这里,我的研究失败了。
我遇到了这个solution:
建议的解决方案是这样的:
def date_time_to_utc(date_time):
tz = pytz.timezone('???')
return tz.normalize(tz.localize(date_time)).astimezone(pytz.utc)
但我没有时区。我正在从 html 源中抓取日期。所以时区可能真的来自世界上的任何地方。是否没有简单可靠的方法将日期时间转换为 UTC?
我可以同时使用dateutil 和pytz 来实现这一点。非常感谢。
更新 这真是漫长的一天。我误读了堆栈跟踪。但是问题仍然有效。
date_time = (datetime}2015-01-13 18:13:26+00:00
news.publication_date_time = date_time
这导致了崩溃。似乎通过这样做,我通过了单元测试:
news.publication_date_time = date_time.replace(tzinfo=None)
这是将 GMT 0 日期时间转换为 UTC 日期时间的正确方法吗?或者实际上是 UTC 的任何时区?
【问题讨论】:
-
您发布的代码(“这是我尝试过的:”)显示您将“天真的”日期时间转换为日期,但错误来自 DatetimeProperty。跟踪是否肯定会导致您显示的代码?它看起来是正确的......
-
@Houman:在
.date()之前不需要.replace(tzinfo=None)。它返回一个总是天真的date对象。
标签: python google-app-engine datetime pytz python-dateutil