You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 16:52:36