我正在開發一個 django 專案,用戶可以在我的模板中選擇一天。如下圖所示。

并且在一天之后選擇發布請求有效。在我的 views.py 中,我可以獲得日期名稱。Like(Monday,Tuesday,...).利用這些知識,我想獲得本周的日期。例如即將到來的價值請求是星期三,我想知道本周星期三的日期,例如 (03.11.2021)
uj5u.com熱心網友回復:
創建一個名為 utils.py 的檔案并將其匯入到您的 views.py 中,您可以將它傳遞給像“Sunday”這樣的字串,它會給出正確的日期,并確保后面的第一個是大寫的。在傳遞給函式之前。這只是一個你可以讓它變得更好的想法)。
from datetime import date,timedelta
import calendar
def find_day(week_day):
my_date = date.today()
a = calendar.day_name[my_date.weekday()]
weekdays = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']
now = weekdays.index(a)
later = weekdays.index(week_day)
date = my_date - timedelta(days= now - later)
return date
uj5u.com熱心網友回復:
我假設您有某個資料(例如今天)并且您想知道同一周內一周中另一天的日期。
您可以使用datetimeandtime將作業日作為今天的整數,計算您擁有的作業日與您的目標作業日之間的天數差異,最后將該差異應用于原始datetime.
可以選擇使用strptime()并嘗試所有已知的作業日格式字串將作業日轉換為整數。不要注意,tm_wday以及weekday()使用相同的約定的“星期一” - > 0至“星期日” - > 6,而%w與%u格式代碼使用不同的約定。計算與遵循相同約定獲得的整數作業日的差異至關重要。因此,如果weekday以整數形式給出,則應使用“星期一”-> 0 到“星期日”-> 6 約定。
import datetime
import time
def weekday_as_int(weekday):
weekday = weekday.strip()
result = None
# %a -- Weekday as locale’s abbreviated name.
# %A -- Weekday as locale’s full name.
# %w -- Weekday as a decimal number, where 0 is Sunday and 6 is Saturday.
# %u -- ISO 8601 weekday as a decimal number where 1 is Monday and 7 is Sunday
for fmt in ("%a", "%A", "%w", "%u"):
try:
result = time.strptime(weekday, fmt).tm_wday
except ValueError:
pass
if result is not None:
return result
if not result:
raise ValueError(f'Could not parse `{weekday}` as week day')
def get_date_for_weekday(curr_date, weekday):
if not isinstance(weekday, int):
weekday = weekday_as_int(weekday)
curr_weekday = curr_date.weekday()
delta = weekday - curr_weekday
return curr_date datetime.timedelta(days=delta)
# datetime.date(2021, 11, 5) is a Friday
get_date_for_weekday(datetime.date(2021, 11, 5), "Monday")
# datetime.date(2021, 11, 1)
get_date_for_weekday(datetime.date(2021, 11, 5), "Friday")
# datetime.date(2021, 11, 5)
get_date_for_weekday(datetime.date(2021, 11, 2), "wed")
# datetime.date(2021, 11, 3)
get_date_for_weekday(datetime.date.today(), "mon")
# datetime.date(2021, 11, 1) # <-- this output only this week
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/349995.html
上一篇:序列化資料后回傳數字的名稱
