如何在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
相关产品推荐
相关产品推荐

