微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用strptime的日历周数到日期异常

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 日返回

解决方法

如果您假设 ISO week dates,则输出符合预期。 2020年第53周是“闰周”;它的星期一和星期四都在 2020 年(星期五是 2021-01-01)。 2021 年的第 1 周从 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) 开始。

,

应该是injp<select class="country" name="country" id="country" > <option value="" disabled>Choose Country</option> <?php foreach($countries as $code => $countryName): ?> <option value="<?php echo htmlspecialchars($code); ?>" <?php if($code == $selectedCountryCode){ echo 'selected'; } ?>><?php echo htmlspecialchars($countryName); ?></option> <?php endforeach; ?> </select><br/> 模式告诉解析器选择那一周的星期一,而第 53 周的星期一日期是 2021 年。

"2020-W52"

输出:

-1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。