如何用Python将含天数的时间格式'1 day, 01:00:00'转换为秒数
解决包含天数的时间字符串转秒数问题
哦,我懂你的困扰了!你当前的代码直接用:分割字符串,结果第一个元素是'1 day, 01'——这里混了天数的文本内容,自然没法直接转成整数,导致报错。咱们得先把天数部分单独剥离出来,再处理时分秒,这样就能把天数也纳入计算啦。
方案一:分步分割处理(直观易懂)
这种方法适合格式固定的场景(比如始终是X day, HH:MM:SS或X days, HH:MM:SS):
import datetime time_1 = '1 day, 01:00:00' # 第一步:把字符串拆成天数部分和时分秒部分 day_section, time_section = time_1.split(', ') # 第二步:提取天数数字(不管是day还是days,split后第一个元素都是数字) days = int(day_section.split()[0]) # 第三步:处理时分秒部分 hours, minutes, seconds = map(int, time_section.split(':')) # 计算总秒数 total_seconds = datetime.timedelta( days=days, hours=hours, minutes=minutes, seconds=seconds ).total_seconds() print(total_seconds) # 输出:90000.0(1天1小时的总秒数)
方案二:正则表达式提取(更灵活)
如果你的时间字符串格式可能有小变动(比如天数部分是2 days或者空格位置不同),用正则提取所有数字会更省心:
import datetime import re time_1 = '1 day, 01:00:00' # 提取字符串中所有的数字,按顺序对应天数、小时、分钟、秒 days, hours, minutes, seconds = map(int, re.findall(r'\d+', time_1)) total_seconds = datetime.timedelta( days=days, hours=hours, minutes=minutes, seconds=seconds ).total_seconds() print(total_seconds) # 同样输出:90000.0
这两种方法都能完美解决你的问题,既保留了天数的计算,又能正确转换时分秒。
内容的提问来源于stack exchange,提问作者Gatt88
相关产品推荐
相关产品推荐

