How do I get the day of week given a date?

前端 未结 26 1340
迷失自我
迷失自我 2020-11-22 04:40

I want to find out the following: given a date (datetime object), what is the corresponding day of the week?

For instance, Sunday is the first day, Mond

26条回答
  •  有刺的猬
    2020-11-22 05:07

    Here is my python3 implementation.

    months = {'jan' : 1, 'feb' : 4, 'mar' : 4, 'apr':0, 'may':2, 'jun':5, 'jul':6, 'aug':3, 'sep':6, 'oct':1, 'nov':4, 'dec':6}
    dates = {'Sunday':1, 'Monday':2, 'Tuesday':3, 'Wednesday':4, 'Thursday':5, 'Friday':6, 'Saterday':0}
    ranges = {'1800-1899':2, '1900-1999':0, '2000-2099':6, '2100-2199':4, '2200-2299':2}
    
    def getValue(val, dic):
        if(len(val)==4):
            for k,v in dic.items():
                x,y=int(k.split('-')[0]),int(k.split('-')[1])
                val = int(val)
                if(val>=x and val<=y):
                    return v
        else:
            return dic[val]
    
    def getDate(val):
        return (list(dates.keys())[list(dates.values()).index(val)]) 
    
    
    
    def main(myDate):
        dateArray = myDate.split('-')
        # print(dateArray)
        date,month,year = dateArray[2],dateArray[1],dateArray[0]
        # print(date,month,year)
    
        date = int(date)
        month_v = getValue(month, months)
        year_2 = int(year[2:])
        div = year_2//4
        year_v = getValue(year, ranges)
        sumAll = date+month_v+year_2+div+year_v
        val = (sumAll)%7
        str_date = getDate(val)
    
        print('{} is a {}.'.format(myDate, str_date))
    
    if __name__ == "__main__":
        testDate = '2018-mar-4'
        main(testDate)
    

提交回复
热议问题