计算经过的时间

时间:2014-02-25 18:19:48

标签: python datetime

我有一个总是这样的文本文件:

977-183 BCA-0055 2014-02-19 10:08:13.61
977-001 BCA-0058 2014-02-19 10:29:08.18
977-013 BCA-0064 2014-02-19 10:28:35.73
977-129 BCA-0079 2014-02-19 10:15:45.24

这些是发电机。我的目标是添加一个额外的列,显示它们到目前为止运行的总小时数,也就是我运行脚本的时间。我是python的新手而且卡住了。我已经想出如何制作一个日期时间对象?在现在的时间。我原本希望在我的计算中使用它(timedelta?)但是无法在文本文件中为时间创建日期时间以继续。 我已经尝试了一些东西并且读了很多但没有运气,这里的代码显示了我最近的尝试:

import datetime
import time

i = datetime.datetime.now()
print i

# this is what the raw data looks like
# 977-183 BCA-0055 2014-02-19 10:08:13.61

raw0 = open("genParse.txt", "r") # text file containing date and time
fin0 = open("elapsed_time.txt", "w") # will contain elapsed times

for line in raw0:
    if '977-' in line:
       line = line.split() 
       date = line[2]
       time = line[3]
             # create datetime object for use in elapsed time calculations
             #tnew = datetime.datetime(date[0:4], date[5:7], date[8:10])
             print date[0:4], date[5:7], date[8:10]

2 个答案:

答案 0 :(得分:3)

使用datetime.datetime.strptime()将字符串解析为datetime.datetime()个对象:

dt = datetime.datetime.strptime(date + ' ' + time, '%Y-%m-%d %H:%M:%S.%f')

现在你可以计算经过的时间:

elapsed = now - dt

timedelta对象。

演示:

>>> import datetime
>>> now = datetime.datetime.now()
>>> date = '2014-02-19'
>>> time = '10:08:13.61'
>>> dt = datetime.datetime.strptime(date + ' ' + time, '%Y-%m-%d %H:%M:%S.%f')
>>> dt
datetime.datetime(2014, 2, 19, 10, 8, 13, 610000)
>>> now - dt
datetime.timedelta(6, 30419, 490913)

此处生成的timedelta对象的值为6天,30419秒和490913微秒。如何将其格式化为字符串取决于您。

答案 1 :(得分:2)

如果您想获得条目与执行脚本之间的区别:

from datetime import datetime

raw0 = open("genParse.txt", "r") # text file containing date and time
fin0 = open("elapsed_time.txt", "w") # will contain elapsed times

for line in raw0:
    if '977-' in line:
        line = line.split() 
        dts = '%s %s' % (line[2], line[3])
        now = datatime.now()
        fmt = '%Y-%m-%d %H:%M:%S.%f'
        time_diff = datetime.strptime(now, FMT) - datetime.strptime(dts, FMT)

显然,您可以使用time_diff对象进行任何操作,timedelta。打印,归档等。这只是扩展您已编写的代码。与Python一样,有很多方法可以实现相同的目标。