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

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

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

实例

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

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


当前回答

我为CodeChef问题解决了这个问题。

import datetime
dt = '21/03/2012'
day, month, year = (int(x) for x in dt.split('/'))    
ans = datetime.date(year, month, day)
print (ans.strftime("%A"))

其他回答

当星期一为0,星期日为6时,使用date.weekday()

or

date.isoweekday(),当周一是1,周日是7

这不需要每周的评论。我推荐这个代码~!

import datetime


DAY_OF_WEEK = {
    "MONDAY": 0,
    "TUESDAY": 1,
    "WEDNESDAY": 2,
    "THURSDAY": 3,
    "FRIDAY": 4,
    "SATURDAY": 5,
    "SUNDAY": 6
}

def string_to_date(dt, format='%Y%m%d'):
    return datetime.datetime.strptime(dt, format)

def date_to_string(date, format='%Y%m%d'):
    return datetime.datetime.strftime(date, format)

def day_of_week(dt):
    return string_to_date(dt).weekday()


dt = '20210101'
if day_of_week(dt) == DAY_OF_WEEK['SUNDAY']:
    None

在MATLAB中,高斯方法

day_name={'Sun','Mon','Tue','Wed','Thu','Fri','Sat'}
month_offset=[0 3 3 6 1 4 6 2 5 0 3 5];  % common year

% input date
y1=2022
m1=11
d1=22

% is y1 leap
if mod(y1,4)==0 && mod(y1,100)==0 && mod(y1,400)==0
    month_offset=[0 3 4 0 2 5 0 3 6 1 4 6];  % offset for leap year
end

% Gregorian calendar
weekday_gregor=rem( d1+month_offset(m1) + 5*rem(y1-1,4) +  4*rem(y1-1,100) + 6*rem(y1-1,400),7)

day_name{weekday_gregor+1}

0:星期日1:星期一。。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'