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

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

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

实例

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

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


当前回答

如果您有理由避免使用datetime模块,那么此函数将起作用。

注:从儒略历到公历的变化被认为发生在1582年。如果您感兴趣的日历并非如此,那么如果年份>1582,则相应地更改行。

def dow(year,month,day):
    """ day of week, Sunday = 1, Saturday = 7
     http://en.wikipedia.org/wiki/Zeller%27s_congruence """
    m, q = month, day
    if m == 1:
        m = 13
        year -= 1
    elif m == 2:
        m = 14
        year -= 1
    K = year % 100    
    J = year // 100
    f = (q + int(13*(m + 1)/5.0) + K + int(K/4.0))
    fg = f + int(J/4.0) - 2 * J
    fj = f + 5 - J
    if year > 1582:
        h = fg % 7
    else:
        h = fj % 7
    if h == 0:
        h = 7
    return h

其他回答

使用Canlendar模块

import calendar
a=calendar.weekday(year,month,day)
days=["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]
print(days[a])

如果你想用英语约会:

from datetime import datetime
datetime.today().strftime('%A')
'Wednesday'

阅读更多信息:https://docs.python.org/3/library/datetime.html#strftime-结构时间行为

import numpy as np

def date(df):
    df['weekday'] = df['date'].dt.day_name()

    conditions = [(df['weekday'] == 'Sunday'),
              (df['weekday'] == 'Monday'),
              (df['weekday'] == 'Tuesday'),
              (df['weekday'] == 'Wednesday'),
              (df['weekday'] == 'Thursday'),
              (df['weekday'] == 'Friday'),
              (df['weekday'] == 'Saturday')]

    choices = [0, 1, 2, 3, 4, 5, 6]

    df['week'] = np.select(conditions, choices)

    return df

在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:星期六

假设你得到了日期、月份和年份,你可以做到:

import datetime
DayL = ['Mon','Tues','Wednes','Thurs','Fri','Satur','Sun']
date = DayL[datetime.date(year,month,day).weekday()] + 'day'
#Set day, month, year to your value
#Now, date is set as an actual day, not a number from 0 to 6.

print(date)