使用strtime的日历周数到日期异常

2024-10-02 16:30:19 发布

您现在位置:Python中文网/ 问答频道 /正文

import datetime
d1 = "2020-W53"
r1 = datetime.datetime.strptime(d1 + '-1', "%Y-W%W-%w")
d2 = "2021-W01"
r2 = datetime.datetime.strptime(d2 + '-1', "%Y-W%W-%w")
print(r1,'<-- does I found TIME TRAVEL -->',r2)

两者都返回相同的值

2021-01-04 00:00:00 

我做错了什么

我想2020年第53周应该回到2020年12月28日


Tags: importdatetimetimed2d1r2printr1
2条回答

如果假设ISO week dates,则输出与预期一样。2020年的第53周是“闰周”;它的周一和周四都在2020年(周五是2021-01-01)。2021年第一周从1月4日开始

import datetime

d1 = "2020-W53"
r1 = datetime.datetime.strptime(d1 + '-1', "%G-W%V-%u")

d2 = "2021-W01"
r2 = datetime.datetime.strptime(d2 + '-1', "%G-W%V-%u")

print(r1, r2)
# 2020-12-28 00:00:00 2021-01-04 00:00:00

有关格式化指令,请参见strftime() and strptime() Format Codes


使用%W%w解析指令,2020年实际上将是零周

d1 = "2020-W00"
r1 = datetime.datetime.strptime(d1 + '-1', "%Y-W%W-%w")
print(r1)
# 2019-12-30 00:00:00

虽然从2019年开始,但周四将在2020年到来。然后,周数将增加到52(2020-12-28),并从2021年的第一周开始(2021-01-04)

它应该是"2020-W52"-1-%w模式告诉解析器选择该周的星期一,第53周的星期一日期在2021年

import datetime
d1 = "2020-W53"
r1 = datetime.datetime.strptime(d1 + '-1', "%G-W%V-%u")
d2 = "2021-W01"
r2 = datetime.datetime.strptime(d2 + '-1', "%G-W%V-%u")
print(r1,'<  does I found TIME TRAVEL  >',r2)

输出:

2020-12-28 00:00:00 <  does I found TIME TRAVEL  > 2021-01-04 00:00:00

相关问题 更多 >