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

如何在Python中计算两个不同格式字符串日期的周数差?

计算不同格式日期的周数差值

首先是原始数据及获取日期的代码:

Data={
    0:{
        'date': "12 jul 2021",
        'country': "xyz",
        'country_id': "0",
        'event_dict': {
           0: {
               'event1': "T",
               'event_no': "45",
               'event_id': "01"
           },
           1: {
               'event1': "C",
               'event_no': "32",
               'event_id': "T",
           },    
           2: {
              'event1': "B",
              'event_no': "11",
              'event_id': "s",
           },    
           3: {
              'event1': "A",
              'event_no': "0",
              'event_id':"p",
           }
        },      
    },    
   1:{        
       'date1': "20th jun 2022",
       'country': "",
       'country_id': "1",    
       'event_dict': {
           0:{
              'event1': "no",
              'event_no': "23",
              'event_id':"abc"
           },
           1: {
              'event1': "yes",
              'event_no': "8",
              'event_id':"def",
           },    
           2: {
              'event1': "false",
              'event_no': "",
              'event_id': "ghi",
           },    
           3: {
              'event1': "NA",
              'event_no': "9",
              'event_id': "jkl", 
           }
        },
    },
}

res = Data[0]['date']
print(res)
# output is 12 jul 2021

res2 = Data[1]['date1']
print(res2)
# output is 20th jun 2022

已从上述Data字典中取出两个不同格式的日期字符串res(值为"12 jul 2021")和res2(值为"20th jun 2022"),请问如何计算这两个日期之间的周数差值?


解决步骤

1. 统一日期格式

res2的日期带th这类序数词后缀,需要先移除。可以用正则表达式匹配并替换掉末尾的st/nd/rd/th后缀。

2. 解析日期为可计算对象

用Python内置的datetime模块,通过strptime方法将字符串转成datetime对象,格式符%d对应日、%b对应缩写月份、%Y对应四位数年份。

3. 计算周数差值

先算出两个日期的天数差,再除以7得到周数,可按需取整或保留小数。


完整代码示例

import re
from datetime import datetime

# 获取日期字符串
res = Data[0]['date']
res2 = Data[1]['date1']

# 清理res2的序数词后缀
cleaned_res2 = re.sub(r'(\d+)(st|nd|rd|th)', r'\1', res2)

# 解析日期为datetime对象
date_a = datetime.strptime(res, '%d %b %Y')
date_b = datetime.strptime(cleaned_res2, '%d %b %Y')

# 计算差值
days_diff = abs((date_b - date_a).days)
weeks_diff = days_diff / 7

print(f"天数差值: {days_diff}")
print(f"周数差值: {weeks_diff:.2f}")  # 保留两位小数

输出示例

天数差值: 343
周数差值: 49.00

如果需要整数周数,可直接用int(weeks_diff)取整,或者用math.floor()/math.ceil()进行向下/向上取整。

内容的提问来源于stack exchange,提问作者Trishna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:24:32