每五天更改一个未来日期
Change a future date every five days
我正在 Django 开发一个销售点应用程序,客户在其中预订产品并在 45 天内交付。我可以使用以下方式在预订时获得交货日期:
from datetime import datetime, timedelta
DELIVERY_IN_DAYS = 45
delivery_on = datetime.today() + timedelta(days=DELIVERY_IN_DAYS)
delivery_on = delivery_on.strftime('%Y-%m-%d')
现在我希望 delivery_on
在 5 天内保持不变并在第 6 天更改。我可以在不使用后台芹菜作业的情况下完成吗?
提前致谢。
是的,我们可以确定一个日期模天数:
from datetime import date, timedelta
today = date.today()
offset_date = date(2000, 1, 1)
dt = today - offset_date
delivery_on = today + timedelta(days=DELIVERY_IN_DAYS - dt.days % 5)
我们可以将逻辑包装到一个函数中:
def to_deliver_day(day):
offset_date = date(2000, 1, 1)
dt = day - offset_date
return day + timedelta(days=DELIVERY_IN_DAYS - dt.days % 5)
如果我们在 7 月 1 日至 7 月 10 日期间调用此逻辑,我们将得到:
>>> to_deliver_day(date(2021, 7, 1))
datetime.date(2021, 8, 13)
>>> to_deliver_day(date(2021, 7, 2))
datetime.date(2021, 8, 13)
>>> to_deliver_day(date(2021, 7, 3))
datetime.date(2021, 8, 13)
>>> to_deliver_day(date(2021, 7, 4))
datetime.date(2021, 8, 18)
>>> to_deliver_day(date(2021, 7, 5))
datetime.date(2021, 8, 18)
>>> to_deliver_day(date(2021, 7, 6))
datetime.date(2021, 8, 18)
>>> to_deliver_day(date(2021, 7, 7))
datetime.date(2021, 8, 18)
>>> to_deliver_day(date(2021, 7, 8))
datetime.date(2021, 8, 18)
>>> to_deliver_day(date(2021, 7, 9))
datetime.date(2021, 8, 23)
>>> to_deliver_day(date(2021, 7, 10))
datetime.date(2021, 8, 23)
通过不同地设置 offset_date
,您可以更改结果“跳跃”的时刻
我正在 Django 开发一个销售点应用程序,客户在其中预订产品并在 45 天内交付。我可以使用以下方式在预订时获得交货日期:
from datetime import datetime, timedelta
DELIVERY_IN_DAYS = 45
delivery_on = datetime.today() + timedelta(days=DELIVERY_IN_DAYS)
delivery_on = delivery_on.strftime('%Y-%m-%d')
现在我希望 delivery_on
在 5 天内保持不变并在第 6 天更改。我可以在不使用后台芹菜作业的情况下完成吗?
提前致谢。
是的,我们可以确定一个日期模天数:
from datetime import date, timedelta
today = date.today()
offset_date = date(2000, 1, 1)
dt = today - offset_date
delivery_on = today + timedelta(days=DELIVERY_IN_DAYS - dt.days % 5)
我们可以将逻辑包装到一个函数中:
def to_deliver_day(day):
offset_date = date(2000, 1, 1)
dt = day - offset_date
return day + timedelta(days=DELIVERY_IN_DAYS - dt.days % 5)
如果我们在 7 月 1 日至 7 月 10 日期间调用此逻辑,我们将得到:
>>> to_deliver_day(date(2021, 7, 1))
datetime.date(2021, 8, 13)
>>> to_deliver_day(date(2021, 7, 2))
datetime.date(2021, 8, 13)
>>> to_deliver_day(date(2021, 7, 3))
datetime.date(2021, 8, 13)
>>> to_deliver_day(date(2021, 7, 4))
datetime.date(2021, 8, 18)
>>> to_deliver_day(date(2021, 7, 5))
datetime.date(2021, 8, 18)
>>> to_deliver_day(date(2021, 7, 6))
datetime.date(2021, 8, 18)
>>> to_deliver_day(date(2021, 7, 7))
datetime.date(2021, 8, 18)
>>> to_deliver_day(date(2021, 7, 8))
datetime.date(2021, 8, 18)
>>> to_deliver_day(date(2021, 7, 9))
datetime.date(2021, 8, 23)
>>> to_deliver_day(date(2021, 7, 10))
datetime.date(2021, 8, 23)
通过不同地设置 offset_date
,您可以更改结果“跳跃”的时刻