如何将字符串日期与时区转换为日期时间?

时间:2016-10-04 13:12:52

标签: python date

我在字符串中有日期:

Tue Oct 04 2016 12:13:00 GMT+0200 (CEST)

我使用(根据https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior):

datetime.strptime(datetime_string, '%a %b %m %Y %H:%M:%S %z %Z')

但我收到错误:

ValueError: 'z' is a bad directive in format '%a %b %m %Y %H:%M:%S %z %Z'

如何正确地做到这一点?

3 个答案:

答案 0 :(得分:4)

%z是falseboolean equal = false & true+0200。因此:

%Z

我还将CEST替换为>>> s = "Tue Oct 04 2016 12:13:00 GMT+0200 (CEST)" >>> datetime.strptime(s, '%a %b %d %Y %H:%M:%S GMT%z (%Z)') datetime.datetime(2016, 10, 4, 12, 13, tzinfo=datetime.timezone(datetime.timedelta(0, 7200), 'CEST')) ; %m是数月的月份,因此在您的情况下%d将被解析为4月。

答案 1 :(得分:2)

python datetime无法解析lut = [1:6 NaN]; myColorMap = jet(6); imagesc(lut, 'AlphaData', ~isnan(lut)) colormap(myColorMap); L = line(ones(6), ones(6)); set(L, {'Color'}, num2cell(myColorMap, 2)) legend(L, {'Forest','Shrubland','Savanna','Grassland','Agricultural','Barron'}) 部分(您可能希望以格式手动指定它)。您可以改为使用GMT

dateutil

答案 2 :(得分:1)

在不考虑datetime格式标识符的情况下实现此目的的更简单方法是使用dateutil.parser()。例如:

>>> import dateutil.parser 
>>> date_string = 'Tue Oct 04 2016 12:13:00 GMT+0200 (CEST)'
>>> dateutil.parser.parse(date_string)
datetime.datetime(2016, 10, 4, 12, 13, tzinfo=tzoffset(u'CEST', -7200))