gpt4 book ai didi

python - 在 python 日期时间中,为什么第一个月 'January' = 1,而一周的第一天 'Monday' = 0?

转载 作者:行者123 更新时间:2023-12-03 20:29:16 24 4
gpt4 key购买 nike

我刚刚了解 datetime 模块,并注意到当您使用 .month 时,它提供 1 到 12 范围内的月份,其中 1 是一月。然而,当使用 .weekday 时,它提供 0 到 6 范围内的工作日。

大多数列表索引从 0 开始,那么为什么月份列表中的 January 不是 0 而不是 1?我查看了 python 日期时间文档,但没有看到解释。提前致谢。

最佳答案

世界不同地区遵循不同的历法:公历、儒略历、吠陀历等等。

1) 月份通常从 1 到 12 编号(我没有看到任何人将一月与 0 相关联。可能会有我不知道的异常(exception)情况)。这让我关注第二点 - 即工作日的编号。

2) 世界不同地区的工作日编号不同。有些人将星期一与 0 相关联,有些则与 1 相关联。就此而言,日期格式在北美、欧洲和其他地方或在不同类型的日历中的表示方式不同。这会造成混淆。

为了解决 #2 中提到的问题,国际标准化组织 (ISO) 提出了一种日期格式,以标准化方式表示数字日历日期,以消除歧义。世界上一部分人认为星期一与数字 0 相关联,而其他人则认为星期一与数字 1 相关联。根据公历维基百科页面(请检查下面提到的超链接):“对于星期几的编号,意见各不相同。ISO 8601,在世界范围内普遍使用,从星期一开始= 1"

现在说到 python:我没有读过/不知道是什么让 weekday() 方法的作者在星期一返回 0,在星期日返回 6。但是还有另一种选择,它更加标准化。我:我

isoweekday():返回星期一的整数 1 和星期日的 7。这遵循 ISO 格式 - 因此这样编号。

所以我假设,作者为每个人创建了一个方法,同时使使用更灵活、更具体。

下面的代码片段展示了这两种方法:

import datetime as dt
td = dt.datetime(2020,2,17) # checking for 17 Feb 2020
print ("This is weekday() method -->",td.weekday(),"--->", dt.datetime.strftime(td,'%a'))
print ("This is isoweekday() method -->",td.isoweekday(),"--->", dt.datetime.strftime(td,'%a'))

输出:

This is weekday() method --> 0 ---> Mon
This is isoweekday() method --> 1 ---> Mon

要进一步阅读日历算法/类型,您可以查看以下链接: ISO_week_date , Determination_of_the_day_of_the_week , Gregorian_calendar , isoweekday

关于python - 在 python 日期时间中,为什么第一个月 'January' = 1,而一周的第一天 'Monday' = 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60245060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com