如何将时间字符串列表转换为含距11:00 AM分钟数的嵌套列表?
时间字符串转换为嵌套列表并计算与11:00 AM的分钟差
需求说明
给定一组格式为['YYYY-MM-DD, HH:MM am/pm']的时间字符串列表,需将其转换为嵌套列表结构:外层列表的每个元素是一个子列表,子列表依次包含:
- 日期(包裹在单元素列表中)
- 具体时间(包裹在单元素列表中)
- 该时间距离当日11:00 AM的分钟数(包裹在单元素列表中)
示例输入
time_list = [ '2022-04-08, 1:05 pm', '2022-04-09, 4:05 pm', '2022-04-10, 7:08 pm', '2022-04-11, 7:05 pm', '2022-04-12, 7:05 pm', '2022-04-13, 7:05 pm', '2022-04-14, 7:05 pm', '2022-04-22, 7:05 pm', '2022-04-23, 1:05 pm', '2022-04-24, 1:35 pm', '2022-04-26, 7:05 pm', '2022-04-27, 7:05 pm' ]
示例输出
[ [['2022-04-08'], ['1:05 pm'], [125]], [['2022-04-09'], ['4:05 pm'], [305]], [['2022-04-10'], ['7:08 pm'], [488]], [['2022-04-11'], ['7:05 pm'], [485]], [['2022-04-12'], ['7:05 pm'], [485]], [['2022-04-13'], ['7:05 pm'], [485]], [['2022-04-14'], ['7:05 pm'], [485]], [['2022-04-22'], ['7:05 pm'], [485]], [['2022-04-23'], ['1:05 pm'], [125]], [['2022-04-24'], ['1:35 pm'], [155]], [['2022-04-26'], ['7:05 pm'], [485]], [['2022-04-27'], ['7:05 pm'], [485]] ]
实现代码(Python)
from datetime import datetime def convert_time_list(time_strings): result = [] for time_str in time_strings: # 拆分日期和时间部分 date_part, time_part = time_str.split(', ') # 解析完整时间为datetime对象 full_time = datetime.strptime(f"{date_part} {time_part}", "%Y-%m-%d %I:%M %p") # 构造当日11:00 AM的datetime对象 eleven_am = datetime.strptime(f"{date_part} 11:00 AM", "%Y-%m-%d %I:%M %p") # 计算时间差并转换为分钟数 minutes_diff = int((full_time - eleven_am).total_seconds() // 60) # 组装嵌套列表 result.append([[date_part], [time_part], [minutes_diff]]) return result # 测试示例输入 time_list = [ '2022-04-08, 1:05 pm', '2022-04-09, 4:05 pm', '2022-04-10, 7:08 pm', '2022-04-11, 7:05 pm', '2022-04-12, 7:05 pm', '2022-04-13, 7:05 pm', '2022-04-14, 7:05 pm', '2022-04-22, 7:05 pm', '2022-04-23, 1:05 pm', '2022-04-24, 1:35 pm', '2022-04-26, 7:05 pm', '2022-04-27, 7:05 pm' ] output = convert_time_list(time_list) for item in output: print(item)
代码说明
- 拆分字符串:使用
split(', ')将每个时间字符串拆分为日期和时间两部分。 - 时间解析:通过
datetime.strptime将日期+时间的组合字符串转换为datetime对象,格式符%I处理12小时制小时数,%p识别am/pm标记。 - 计算时间差:构造当日11:00 AM的
datetime对象,计算与目标时间的差值,通过total_seconds()转换为总秒数后除以60得到分钟数。 - 组装嵌套列表:按照要求将日期、时间、分钟差分别包裹在单元素列表中,再组合为外层子列表。
内容的提问来源于stack exchange,提问作者Alexander Mermelstein
相关产品推荐
相关产品推荐

