访问数据中的时间戳部分

时间:2019-03-07 10:56:11

标签: python

我的数据格式是:

2019-03-07T11:50:03.161033+01:00

我的脚本:

import datetime
print datetime.datetime.strptime('2019-03-07T11:50:03.161033+01:00', '%Y-%m-%dT%H:%M:%S.%f%Z')

我得到错误代码:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    print datetime.datetime.strptime('2019-03-07T11:50:03.161033+01:00', '%Y-%m-%dT%H:%M:%S.%f%Z')
  File "/usr/lib/python2.7/_strptime.py", line 332, in _strptime
    (data_string, format))
ValueError: time data '2019-03-07T11:50:03.161033+01:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%Z'

如何访问+01:00时间戳部分?

3 个答案:

答案 0 :(得分:1)

问题出在您的原始数据格式中。

2019-03-07T11:50:03.161033+01:00

时区部分+01:00实际上应该是+0100,请注意缺少完整的冒号。

如果要将原始日期格式更改为正确的日期格式,则datetime.datetime.strptime将起作用。

s = 2019-03-07T11:50:03.161033+0100
datetime.datetime.strptime(s,'%Y-%m-%dT%H:%M:%S.%f%z')
[out] datetime.datetime(2019, 3, 7, 11, 50, 3, 161033, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))

您可以按以下方式转换日期格式:

s = r'2019-03-07T11:50:03.161033+01:00'
lastSemiColor = s.rfind(':') # returns index
s = s[:ii] + s[ii+1:]
print(s) # returns '2019-03-07T11:50:03.161033+0100'

这可以在documentation

中找到
%z  UTC offset in the form ±HHMM[SS[.ffffff]] 

答案 1 :(得分:0)

这将起作用:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import datetime

if __name__ == '__main__':
    a = "2019-03-07T11:50:03.161033+01:00"
    b = datetime.datetime.strptime(a, "%Y-%m-%dT%H:%M:%S.%f%z").strftime("%z")

    print(b)

输出

  

+0100

答案 2 :(得分:0)

尝试一下

   print('TimeStamp is : %d-%d-%d %d:%d:%d' % (
        timeObj.tm_mday, timeObj.tm_mon, timeObj.tm_year, timeObj.tm_hour, timeObj.tm_min, timeObj.tm_sec))