如何将time.strptime用于一个充满长格式日期的文件

时间:2015-07-29 15:46:15

标签: python time strptime

我是python的新手,并试图学习如何读取数据文件。我有一个带时间戳的文件:

[2015-07-27T18:01:55.7647616+01:00 2015-07-27T18:01:55.7827840+01:00
 2015-07-27T18:01:55.8142720+01:00 ..., 2015-07-27T18:04:05.3064192+01:00
 2015-07-27T18:04:05.3419776+01:00 2015-07-27T18:04:05.3713280+01:00]

我在做:

times = np.loadtxt(filename, dtype=object)
print times[0]
num_records = np.size(times,0)
for date in range(num_records):
    print time.strptime(times[date], "%Y-%b-%dT%H:%M:%S.0000000+00:000")

但是我收到以下错误:

ValueError: time data '2015-07-27T18:01:55.7647616+01:00' does not match format '%Y-%b-%dT%H:%M:%S.0000000+00:000'

我想知道是否有人可以澄清如何匹配此时间格式的格式?最后,我想将该日期转换为数字,以便我可以对其进行统计。怎么做?

3 个答案:

答案 0 :(得分:2)

您也可以使用dateutil.parser模块。

示例/演示 -

>>> import dateutil.parser
>>> dateutil.parser.parse('2015-07-27T18:01:55.7647616+01:00')
datetime.datetime(2015, 7, 27, 18, 1, 55, 764761, tzinfo=tzoffset(None, 3600))

在您的代码中 -

import dateutil.parser
times = np.loadtxt(filename, dtype=object)
print times[0]
num_records = np.size(times,0)
for date in range(num_records):
    print dateutil.parser.parse(times[date])

答案 1 :(得分:0)

您不会复制错误引发的物理格式......

试试这个:

import datetime
now = datetime.datetime.now()
print now

默认情况下,它会以您想要的格式打印。

答案 2 :(得分:0)

这是我能得到的最接近的(忽略了mircosconds的最后一位数和+01:00)

import time

dt = time.strptime('2015-07-27T18:04:05.3419776+01:00'[:26],
                   '%Y-%m-%dT%H:%M:%S.%f')
print(dt)