c问题描述
小蓝手里有一份 2022年度自己的上班打卡记录文件,文件包含若干条打卡记录,每条记录的格式均为“yyyy-MM-dd HH:mm:ss”,即按照年-月-日时分秒的形式记录着一个时间点(采用24 小时进制)。由于某些原因这份文件中的时间记录并不是按照打卡的时间顺序记录的,而是被打乱了。但我们保证小蓝每次上班和下班时都会正常打卡,而且正好打卡一次,其它时候不会打卡。每一对相邻的上-下班打卡之间的时间就是小蓝本次的工作时长,例如文件内容如下的话:
222-01-01 12::5222-日1-2 :2日:52022-01-01 7:58:2222-1-01 16:1:35
表示文件中共包含了两段上下班记录,1)2022-01-0107:58:02~2022-01-0112:00:05,工作时长为 14523 秒;2)2022-01-0116:01:35~2022-01-0200:20:05,工作时长为29910秒;工作时长一共是14523+2991044433秒。现在小蓝想知道在2022年度自己的工作时长一共是多少秒?
import os
import sys
from datetime import *
time = []
with open('test.txt', 'r') as f:
for line in f.readlines():
line = line.strip('\n')
line = datetime.strptime(line, '%Y-%m-%d %H:%M:%S')
time.append(line)
time.sort()
print(time)
i = 0
sum = 0
while i < len(time) - 1:
sum = (time[i+1] - time[i]).seconds + sum
i += 2
print(sum)
# print(5101913)
datetime.strptime(line, '%Y-%m-%d %H:%M:%S')
?将会将字符串?"2023-12-28 15:30:45"
?解析为一个日期时间对象,这个对象可以用于进行日期时间相关的操作和计算。
datetime.datetime(2022, 1, 3, 6, 58, 15)
year = line.year
month = line.month
day = line.day
hour = line.hour
minute = line.minute
second = line.second
print(year, month, day, hour, minute, second)
2023 12 28 15 30 45
# 计算相邻两个日期时间对象之间的时间差(以秒为单位)
time_diff = (time[1] - time[0]).seconds
?time.sort()将时间从小到大排序