Python 将Iso8601转换为非十进制UTC区域OFFET
我如何修改下面的代码来处理时区,注意没有十进制Python 将Iso8601转换为非十进制UTC区域OFFET,python,time,iso8601,Python,Time,Iso8601,我如何修改下面的代码来处理时区,注意没有十进制 2015-12-22T11:57:11-08:00,-8:00引起了我的问题,大纪元时间是否考虑了时区 timegm(datetime.strptime(datestring, "%Y-%m-%dT%H:%M:%S.%f").timetuple()) 这里有几个问题 如果您的时间不包括微秒块,则此日期字符串将无法与您提供的格式字符串一起使用。不用-08:00就试试吧。这意味着你要么需要假设你所有的时间都不会有那个障碍,要么你需要考虑这两种可能性
2015-12-22T11:57:11-08:00
,-8:00
引起了我的问题,大纪元时间是否考虑了时区
timegm(datetime.strptime(datestring, "%Y-%m-%dT%H:%M:%S.%f").timetuple())
这里有几个问题
datetime
对象的tzinfo
,timetuple
也不会考虑该tzinfo
。您需要使用utctimetuple
现在只需要正确解析datetime。有一些解决方案不使用外部库,但我发现解析ISO8601日期字符串的最简单方法是使用通过pip提供的python dateutil包:
>>> import calendar
>>> from dateutil import parser
>>> datestring = '2015-12-22T11:57:11-08:00'
>>> tz_aware_datetime = parser.parse(datestring)
>>> tz_aware_datetime
datetime.datetime(2015, 12, 22, 11, 57, 11, tzinfo=tzoffset(None, -28800))
>>> calendar.timegm(tz_aware_datetime.utctimetuple())
1450814231
@Padraic Cunningham不重复,因为“正常”时间字符串的一部分丢失