如何解决使用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) 开始。
,应该是in
。 jp
和 <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 举报,一经查实,本站将立刻删除。