如何使用python日期格式字符串和strtime函数将天数转换为小时数?
我正在处理从mongoDB检索的日期,但是,它们的格式不尽相同。它们有三种不同的格式:如何使用python日期格式字符串和strtime函数将天数转换为小时数?,python,datetime,datetime-format,Python,Datetime,Datetime Format,我正在处理从mongoDB检索的日期,但是,它们的格式不尽相同。它们有三种不同的格式: 1. '%H:%M:%S' (Hours:Minutes:Seconds) 2. '%H:%M:%S.f' (Hours:Minutes:Seconds:Milliseconds) 3. Days.Hours:Minutes:Seconds:Milliseconds 我想计算数据库中所有记录的总时间。日期以字符串格式存储,因此我使用strtime函数检索一个时间对象,然后使用该时间对象生成一个时间增量,以便
1. '%H:%M:%S' (Hours:Minutes:Seconds)
2. '%H:%M:%S.f' (Hours:Minutes:Seconds:Milliseconds)
3. Days.Hours:Minutes:Seconds:Milliseconds
我想计算数据库中所有记录的总时间。日期以字符串格式存储,因此我使用strtime函数检索一个时间对象,然后使用该时间对象生成一个时间增量,以便将其全部相加:
formats = ('%H:%M:%S', '%%H:%M:%S.f', <3rd format here>)
for db_item in db_collection:
for fmt in formats:
try:
temp = datetime.strptime(db_item, fmt)
temp = datetime.timedelta(hours=temp.hour,
minutes=temp.minute,
seconds=temp.minute,
milliseconds=(temp.microsecond / 1000)
return temp
except ValueError as e:
平均值:1天(24小时)、1小时、20分钟、40秒和97毫秒
我的目标是:
25:20:40.97(24小时+1小时)
是否有一种格式允许这样做?或者我应该分别提取n天,乘以24,然后手动添加?您可以尝试
%d
格式代码。但是,您会遇到一些限制,因为%d
是一个月中的一天,这意味着它是一个范围(1,31+1)内的整数。
datetime.datetime专门用于日期和时间,而不是持续时间
使用regex解析字符串并直接构造timedelta可能比使用%d
格式代码更容易
这里有一个正则表达式,它适用于所有3种持续时间格式
重新导入
模式=重新编译(
"""
#0?删除前导零
#天和毫秒是可选的
(?:(\d+)?#天
0?(\d+):#小时
0?(\d+):#分钟
0?(\d+)#秒
(?:.(\d+))#毫秒
""",
重复冗长
)
匹配=模式。完全匹配(“01:20:40”)
如果匹配不为无:#如果fullmatch失败,则匹配为无
打印(match.groups())
匹配=模式。完全匹配(“01:20:40.97”)
如果匹配项不是无:
打印(match.groups())
匹配=模式。完全匹配(“1.01:20:40.97”)
如果匹配项不是无:
打印(match.groups())
输出
(无,'1','20','40',无)
(无,'1','20','40','97')
('1', '1', '20', '40', '97')
函数datetime.timedelta()
不能给出25:20:40.97
,只能给出1day,01:20:40.970000
。
1.01:20:40.97