2024-04-18 05:43:55 发布
网友
我在做Python日期比较:
假设我有一个这样的日期:'Fri Aug 17 12:34:00 2012 +0000'
'Fri Aug 17 12:34:00 2012 +0000'
我用以下方式解析它:
dt=datetime.strptime('Fri Aug 17 12:34:00 2012 +0000', '%a %b %d %H:%M:%S %Y +0000')
我在文档页上找不到如何处理剩余的+0000? 我想要一个比硬编码值更通用的解决方案。在
+0000
也许这很简单,有什么提示吗?在
您可能还想看一下Delorean。它是pytz和dateutil的包装器,它提供了时区操作和简单的日期-时间-时区转换。在
pytz
dateutil
这是我如何解决你和德洛宁的问题。在
>>> from delorean import parse >>> parse("2011/01/01 00:00:00 -0700") Delorean(datetime=2011-01-01 07:00:00+00:00, timezone=UTC)
从那里,您可以通过返回.datetime属性来返回日期时间。如果你想做一些时间转换,只需使用Delorean对象并做.shift("UTC")等
.datetime
.shift("UTC")
默认的datetime模块对时区的处理不是很好;除了当前机器的时区和UTC之外,基本上不支持它们。在
datetime
您必须使用一个外部库来实现这一点,或者手动处理时区偏移量。在
外部库选项:
Use ^{}可以处理您想使用的任何日期和/或时间格式:
from dateutil import parser dt = parser.parse(s)
^{} library只处理ISO 8601格式,其中包括相同格式的时区偏移量:
import iso8601 datetimetext, tz = s.rsplit(None, 1) # only grab the timezone portion. timezone = iso8601.iso8601.parse_timezone('{}:{}'.format(tz[:3], tz[3:])) dt = datetime.strptime(datetimetext, '%a %b %d %H:%M:%S %Y').replace(tzinfo=timezone)
每种方法的演示:
>>> import datetime >>> s = 'Fri Aug 17 12:34:00 2012 +0000' >>> import iso8601 >>> timezone = iso8601.iso8601.parse_timezone('{}:{}'.format(tz[:3], tz[3:])) >>> datetime.datetime.strptime(datetimetext, '%a %b %d %H:%M:%S %Y').replace(tzinfo=timezone) datetime.datetime(2012, 8, 17, 12, 34, tzinfo=<FixedOffset '+00:00'>) >>> from dateutil import parser >>> parser.parse(s) datetime.datetime(2012, 8, 17, 12, 34, tzinfo=tzutc())
使用dateutil.parser:
dateutil.parser
>>> import dateutil.parser >>> dateutil.parser.parse('Fri Aug 17 12:34:00 2012 +0000') >>> datetime.datetime(2012, 8, 17, 12, 34, tzinfo=tzutc())
您可能还想看一下Delorean。它是
pytz
和dateutil
的包装器,它提供了时区操作和简单的日期-时间-时区转换。在这是我如何解决你和德洛宁的问题。在
从那里,您可以通过返回
.datetime
属性来返回日期时间。如果你想做一些时间转换,只需使用Delorean对象并做.shift("UTC")
等默认的
datetime
模块对时区的处理不是很好;除了当前机器的时区和UTC之外,基本上不支持它们。在您必须使用一个外部库来实现这一点,或者手动处理时区偏移量。在
外部库选项:
Use ^{} 可以处理您想使用的任何日期和/或时间格式:
^{} library 只处理ISO 8601格式,其中包括相同格式的时区偏移量:
每种方法的演示:
使用
dateutil.parser
:相关问题 更多 >
编程相关推荐