我想了解以下内容:给定一个日期(datetime对象),一周中对应的日期是什么?

例如,星期天是第一天,星期一是第二天。。等等

然后如果输入的内容类似于今天的日期。

实例

>>> today = datetime.datetime(2017, 10, 20)
>>> today.get_weekday()  # what I look for

产量可能是6(因为现在是星期五)


当前回答

这是一个新的方法。星期天是0。

from datetime import datetime
today = datetime(year=2022, month=6, day=17)
print(today.toordinal()%7)  # 5
yesterday = datetime(year=1, month=1, day=1)
print(today.toordinal()%7)  # 1

其他回答

如果你想用英语约会:

from datetime import date
import calendar
my_date = date.today()
calendar.day_name[my_date.weekday()]  #'Wednesday'

如果您不完全依赖datetime模块,日历可能是更好的选择。例如,这将为您提供日期代码:

calendar.weekday(2017,12,22);

这将给你一天:

days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
days[calendar.weekday(2017,12,22)]

或者以python的风格,作为一行:

["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"][calendar.weekday(2017,12,22)]

这是一个新的方法。星期天是0。

from datetime import datetime
today = datetime(year=2022, month=6, day=17)
print(today.toordinal()%7)  # 5
yesterday = datetime(year=1, month=1, day=1)
print(today.toordinal()%7)  # 1

以下是以DD-MM-YYYY格式输入日期的代码。您可以通过更改“%d-%m-%Y”的顺序以及更改分隔符来更改输入格式。

import datetime
try:
    date = input()
    date_time_obj = datetime.datetime.strptime(date, '%d-%m-%Y')
    print(date_time_obj.strftime('%A'))
except ValueError:
    print("Invalid date.")

一个简单、直接但尚未提及的选项:

import datetime
...
givenDateObj = datetime.date(2017, 10, 20)
weekday      = givenDateObj.isocalendar()[2] # 5
weeknumber   = givenDateObj.isocalendar()[1] # 42