让我解释一下,我试图改变2017年的第5周; 201705年属于二月,因为它属于一年中的第五周。
到目前为止,我已经能够将自定义日期格式转换为如下日期:
import datetime
d = '201705'
dt = datetime.datetime.strptime(d+'1', '%Y%W%w')
然后输出,2017-01-30 00:00:00
但是有没有办法可以将日期转换为2月,同样属于一个月的所有周数转换为该月
编辑: 我所追求的是,如果周数是5,那么它的2月,如果是9,那么它是3月 - 有点周 - 月的映射,但除了改变年份之外,我还没有找到任何方法做到这一点 - 每周格式化
答案 0 :(得分:0)
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
我对你为什么期待二月而感到有点困惑,因为01-30实际上是一月份。
您可以找到更多格式信息here
答案 1 :(得分:0)
快速测试我的评论,关于选择星期日作为任意工作日而不是星期一。
>>> 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)
>>>
您的里程可能会有所不同 今年我还没有进行数周的测试。