首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从具有不同格式的字符串计算python中两个日期之间的周数。

从具有不同格式的字符串计算python中两个日期之间的周数。
EN

Stack Overflow用户
提问于 2022-07-22 11:02:35
回答 3查看 129关注 0票数 1
代码语言:javascript
复制
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

我想得到这两个日期的周差,我已经存储在两个不同的变量。怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-07-22 11:16:03

首先,您需要使用每个日期的特定格式将string转换为datetime,然后计算不同,如下所示。

代码语言:javascript
复制
from datetime import datetime

d1 = datetime.strptime(Data[0]['date'], '%d %b %Y') # date is 12 jul 2021
d2 = datetime.strptime(Data[1]['date1'], '%dth %b %Y') # date is 20th jun 2022
diff = d2 - d1
print(f'days : {diff.days}')
print(f'weeks : {diff.days//7}')

代码语言:javascript
复制
days : 343
weeks : 49

其他格式的日期,如果您需要使用,也许您的日期有不同的格式:(从这里:Ref)

  • %d是日数(2位,前缀为前导0‘s)如果necessary)
  • %m是月份号(2位,前缀为前导0’s如果necessary)
  • %b是月份缩写(3 letters)
  • %B是全月的月份名称,(letters)
  • %y是年号缩写)(最后2 digits)
  • %Y是年号(4位)

)

票数 2
EN

Stack Overflow用户

发布于 2022-07-22 11:15:56

您需要首先将日期转换为date对象。现在它们是弦乐。您可以通过使用类似于以下内容的方法来做到这一点:

代码语言:javascript
复制
from datetime import datetime

date_time_str = '20th june 2022'

date_time_obj = datetime.strptime(date_time_str, '%dth %B %Y')


print ("The type of the date is now",  type(date_time_obj))
print ("The date is", date_time_obj)

一旦你这样做了,你可以减去这两个日期,以得到他们之间的日子。然后,您只需将天数差异转换为一周差。

票数 1
EN

Stack Overflow用户

发布于 2022-07-22 11:19:24

代码语言:javascript
复制
res2 = res2.replace("th", "") # sanitize date string.

res = datetime.strptime(res, "%d %b %Y") # parse first date string to date
res2=datetime.strptime(res2, "%d %b %Y") # parse second date string to date

print (res2-res) # date substraction gives you days.

dayDiff = (res2-res).days # get the days
print (dayDiff/7) # and divide by 7 to get weeks
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73079298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档