Python中字符串转日期及循环计算相邻日期timedelta的方法
解决方案:字符串日期转date类型并计算相邻间隔
当然可以!Python的datetime模块里的datetime.strptime()函数就是专门干这个的——它能直接把'30.06.2019'或'30/06/2019'这类格式的字符串转换成date对象,完全不用把日期拆成整数来折腾。下面结合你的表格数据给你完整的实现方案:
第一步:导入模块并转换日期字符串
首先导入datetime模块,然后遍历你的tab列表,把每个元素里的日期字符串转成date对象:
from datetime import datetime tab = [ [21091705, 0,'30.06.2019'], [21091705, 653777,'29.06.2019'], [21091705, 653842,'29.06.2019'], [21091705, 641701,'28.06.2019'], [21091705, 642000,'27.06.2019'], [21091705, 0,'25.06.2019'], [21091705, 642030,'25.06.2019'], [21091705, 642030,'25.06.2019'], [21091705, 637030,'25.06.2019'], [21091705, 0,'25.06.2019'], [21091705, 0,'17.05.2019'], [21091705, 0,'25.06.2019'] ] # 批量转换日期字符串为date对象,兼容.和/两种分隔符 date_list = [] for item in tab: # 先把/替换成.,统一格式 cleaned_date_str = item[2].replace('/', '.') # 用strptime解析,%d是日,%m是月,%Y是4位年 date_obj = datetime.strptime(cleaned_date_str, "%d.%m.%Y").date() date_list.append(date_obj)
这里的strptime()参数说明:
"%d.%m.%Y"是日期格式匹配符:%d对应两位数的日期,%m对应两位数的月份,%Y对应四位数的年份,完美匹配你的日期格式。- 用
replace('/', '.')是为了兼容dd/mm/yyyy格式的日期,如果你的数据只有.分隔符,这一步可以省略。
第二步:循环计算相邻日期的间隔
转换完date对象后,直接相减就能得到timedelta对象,获取间隔天数只需要调用.days属性就行。这里有两种循环方式:
方式1:用索引循环
print("相邻日期间隔(天):") for idx in range(1, len(date_list)): prev_date = date_list[idx-1] curr_date = date_list[idx] delta = curr_date - prev_date print(f"第{idx}组: {prev_date} ↔ {curr_date} = {delta.days} 天")
方式2:用zip配对(更简洁)
print("相邻日期间隔(天):") for prev_date, curr_date in zip(date_list, date_list[1:]): delta = curr_date - prev_date print(f"{prev_date} ↔ {curr_date} = {delta.days} 天")
运行后就能得到每一组相邻日期的间隔天数,完全符合你的需求——不需要转整数集,直接用date对象运算即可。
内容的提问来源于stack exchange,提问作者Ventre90
相关产品推荐
相关产品推荐

