我正在嘗試顯示上個月的第一周星期一。以 2022 年 2 月為例,我希望將 31-1-2022 作為第一個星期一。
from datetime import datetime, date, timedelta
previous_month = date.today().replace(day=1) - timedelta(days=1)
date = datetime.strptime(str(previous_month), "%Y-%m-%d")
year= date.year
month = date.month
d = datetime(year, int(month),7)
offset = -d.weekday()
first_monday = d timedelta(offset)
print(first_monday)
但是上面的代碼顯示為 7-2-2022。
uj5u.com熱心網友回復:
查找該月的第一天。使用它的作業日數并減去它:
>>> from datetime import *
>>> last = date.today().replace(day=1) - timedelta(days=1)
>>> last
datetime.date(2022, 2, 28) # last day of last month
>>> first = last.replace(day=1)
>>> first
datetime.date(2022, 2, 1) # first day of last month
>>> first.weekday()
1 # Tuesday
>>> first - timedelta(days=first.weekday())
datetime.date(2022, 1, 31) # Monday of first week of last month
請注意,“第一周”有許多相互競爭的可能定義。這僅查找上個月 1 日所在的一周中的星期一。這是否是您想要的以及是否符合任何標準是另一個話題。
uj5u.com熱心網友回復:
from datetime import datetime, date, timedelta
previous_month = date.today().replace(day=1) - timedelta(days=1)
year= previous_month.year
month = previous_month.month
offset = previous_month.replace(day=1).weekday()
print(datetime(year,month,1) - timedelta(days=offset))
如果星期一,則作業日為 0,因此您可以從任何一個月的第一天減去以找到第一個星期一。
uj5u.com熱心網友回復:
這確實不是小事。特別是因為第一個星期一可能會提前一個月。但是我們可以得到一個日期所在的等歷星期。所以我們需要:
- 獲取上個月的第一天
- 從那天獲取日歷周
- 獲取該日歷周的第一天
1. 第一步——先行一步
last_month = date.today().month - 1
first_day_lm = date.today().replace(day=1, month=last_month)
2.日歷周
week = first_day_lm.isocalendar()
3.等歷的第一天
first_monday = datetime.strptime(
f"{week.year}_{week.week}_1",
"%G_%V_%u"
)
結果應該是:datetime.datetime(2022, 1, 31, 0, 0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/452709.html
