去年是否有使用python的最佳实践方法?

问题描述 投票:0回答:1

例如,今天是星期三。如果我想在去年的这个星期三得到一个特定的星期三,那么到目前为止,我使用的方法是从今天的日期创建一个ISOCalendar元组,然后减去一年。这是执行此操作的最佳方法,还是我在datetime类中缺少一些简单的方法,以便能够更好地获得可比较的日期。我不想获取特定的日期,但要获取该特定星期中的特定星期几。

我也不知道如何正确计算leap日。

python datetime timedelta
1个回答
0
投票

假设您想在另一年内以相同的日历周编号获得相同的工作日。您可以使用ISO 8601 calendar来执行此操作,请参见下面的代码。 注意:如果使用ISO日历,则一周从星期一开始。

import datetime

t = datetime.date(2020, 2, 19).isocalendar()
# (2020, 8, 3); year, calendar week, day of week

_, weeknumber, weekday = t
other_year = 2019

# using date.fromisocalendar() (Python 3.8):
dt_otheryear = datetime.date.fromisocalendar(other_year, weeknumber, weekday)
# datetime.date(2019, 2, 20)

# ...or using strptime
dt_otheryear = datetime.datetime.strptime(f"{other_year} {weeknumber} {weekday}", '%G %V %u')
# datetime.datetime(2019, 2, 20, 0, 0)

# check:
# datetime.date(2019, 2, 20).isocalendar()
# (2019, 8, 3)

参考:

© www.soinside.com 2019 - 2024. All rights reserved.