Python:从文件中获取时间并进行比较

时间:2017-09-05 13:20:40

标签: python datetime

第一部分:我有一个打开文件的Python脚本,以下列格式获取起始时间码字符串:

136:17:30:00(DOY:HH:MM:SS)

以格式停止时间码字符串:

137:01:30:00(DOY:HH:MM:SS)

用户输入开始年份(2017年)和终止年份(2017年)。

我想知道如何将开始和停止时间码(以及年份字符串)转换为' datetime"宾语。这被认为是实验的开始和停止时间。

第二部分:用户将输入"录制"开始时间和录音"以格式停止时间:

2017:136:18:00:00(年份:DOY:HH:MM:SS) 2017:137:01:00:00(年份:DOY:HH:MM:SS)

这被认为是记录开始/停止时间。

我也希望转换为日期时间对象。我想它与第一部分的机制相同。

我想首先验证记录停止/开始时间是否在实验停止/开始时间内,并且能够从开始时间减去停止时间。

有些Python文档让我对如何做到这一点感到困惑。有任何想法吗?提前谢谢。

2 个答案:

答案 0 :(得分:2)

Python的datetime.strptime()用于将日期的字符串表示转换为datatime个对象。它允许您为一年中的某一天指定%j,如下所示:

from datetime import datetime

print datetime.strptime("136:17:30:00", "%j:%H:%M:%S").replace(year=2017)
print datetime.strptime("2017:136:17:30:00", "%Y:%j:%H:%M:%S")

这会显示:

2017-05-16 17:30:00
2017-05-16 17:30:00

.replace()用于为datetime个对象提供一年,否则默认为1900

总结:

%j - 作为零填充十进制数字的一年中的某一天 %Y - 以十进制数字为世纪的年份 %H - 小时(24小时制)作为零填充十进制数 %M - 分钟为零填充十进制数 %S - 第二个作为零填充十进制数。

如果您将开始和结束代码转换为datetime个对象,则可以减去它们,为您提供以下时间:

dt_start = datetime.strptime("136:17:30:00", "%j:%H:%M:%S")
dt_end = datetime.strptime("137:01:30:00", "%j:%H:%M:%S")

print dt_end - dt_start

给你:

8:00:00

答案 1 :(得分:0)

我不知道你的问题究竟是什么。你今年做了什么。我希望以下内容对您有所帮助:

time1='136:17:30:00'
time2='137:01:30:00'
#yr=2017

from datetime import timedelta

def objMaker(time):
    arr=time1.split(':')
    obj=timedelta(hours=int(arr[1]),minutes=int(arr[2]),seconds=int(arr[3]))
    return obj

obj1=objMaker(time1)
obj2=objMaker(time2)