簡體   English   中英

如何設置獲取星期幾的日期?

[英]How to set a get the date of the day of the week?

基本上我想要的是在說下周或類似格式后獲得星期幾,盡管我在這里找到了我需要的東西:

在給定日期后找到第一個星期一的日期

但是測試代碼證明,它給出了一些我希望有所不同的答案:

import datetime
def next_weekday(d, weekday):
    days_ahead = weekday - d.weekday()
    if days_ahead <= 0: # Target day already happened this week
        days_ahead += 7
    return d + datetime.timedelta(days_ahead)

d = datetime.date(2017, 11, 30)
next_monday = next_weekday(d, 0) # 0 = Monday, 1=Tuesday, 2=Wednesday...
print(next_monday)

它按預期工作,可以正確地為next_weekday(d,0) ,1,2,3給出日期,然后為next_weekday(d,4)給出日期next_weekday(d,4)我得到2017-12-01 ,我的系統將其解釋為有問題的,因為this friday等於2017-12-01 ,而next friday相當於2017-12-08同為周六和周日,所以基本上我想要什么,如果我們尋求星期仍然是在同一個星期給的那一天的日期后一周。

您是否不僅可以總是在days_ahead添加7, days_ahead僅在“目標日期已在本周發生”時每次都在下周獲得一天?

import datetime

def next_weekday(d, weekday):
  days_ahead = weekday - d.weekday() + 7
  return d + datetime.timedelta(days_ahead)

d = datetime.date(2017, 11, 30)
next_friday = next_weekday(d, 4)
print(next_friday) # 2017-12-08 which is next week rather than the friday this week: 2017-12-01

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM