簡體   English   中英

將年周至今的條件轉換為該周中該月的最大天數的日期

[英]Convert year-week to date condition to date where the week has max days for that month

讓我解釋一下,我正在嘗試轉換2017年的第5周; 201705到屬於2月的日期,因為它屬於一年的第5周。

到目前為止,我已經能夠將自定義日期格式轉換為以下日期:

import datetime 
d = '201705'
dt = datetime.datetime.strptime(d+'1', '%Y%W%w')

然后輸出,2017-01-30 00:00:00

但是有一種方法可以將日期轉換為2月,並且類似地,屬於一個月的所有星期數都將轉換為該月

編輯:我要的是,如果周數是5,然后是2月,如果周數是9,然后是3月-類似於周-月映射,但是除了將年-周更改為日期格式

import datetime 
d = '201705'
dt = datetime.datetime.strptime(d+'1', '%Y%W%w')
month_from_date = dt.strftime("%B")
print(dt)
print(month_from_date)

將輸出:

2017-01-30 00:00:00
January

對於您為什么期望2月,我有點困惑,因為01-30實際上是1月。

您可以在此處找到更多格式信息

快速測試一下我的評論,關於選擇星期日作為任意工作日而不是星期一。

>>> import datetime
>>> d1=['201205','201305','201605','201705','201805','201905','202005','202105','202205','202305']
>>> d2=['201209','201309','201609','201709','201809','201909','202009','202109','202209','202309']
>>> for dat in d1:
...  datetime.datetime.strptime(dat+ '0','%Y%W%w')
... 
datetime.datetime(2012, 2, 5, 0, 0)
datetime.datetime(2013, 2, 10, 0, 0)
datetime.datetime(2016, 2, 7, 0, 0)
datetime.datetime(2017, 2, 5, 0, 0)
datetime.datetime(2018, 2, 4, 0, 0)
datetime.datetime(2019, 2, 10, 0, 0)
datetime.datetime(2020, 2, 9, 0, 0)
datetime.datetime(2021, 2, 7, 0, 0)
datetime.datetime(2022, 2, 6, 0, 0)
datetime.datetime(2023, 2, 5, 0, 0)
>>> for dat in d2:
...  datetime.datetime.strptime(dat+ '0','%Y%W%w')
... 
datetime.datetime(2012, 3, 4, 0, 0)
datetime.datetime(2013, 3, 10, 0, 0)
datetime.datetime(2016, 3, 6, 0, 0)                                            
datetime.datetime(2017, 3, 5, 0, 0)
datetime.datetime(2018, 3, 4, 0, 0)
datetime.datetime(2019, 3, 10, 0, 0)
datetime.datetime(2020, 3, 8, 0, 0)
datetime.datetime(2021, 3, 7, 0, 0)
datetime.datetime(2022, 3, 6, 0, 0)
datetime.datetime(2023, 3, 5, 0, 0)
>>> 

你的旅費可能會改變。
一年以后,我還沒有進行測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM