每天CookBook之Python-053

  • 获取过去最近的星期X的日期
from datetime import datetime, timedelta

weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday',
            'Friday', 'Saturday', 'Sunday']


def get_previout_byday(dayname, start_date=None):
    if start_date is None:
        start_date = datetime.today()
    day_num = start_date.weekday()
    day_num_target = weekdays.index(dayname)
    day_ago = (7 + day_num - day_num_target) % 7
    if day_ago == 0:
        day_ago = 7
    target_date = start_date - timedelta(days=day_ago)
    return target_date


print(datetime.today())
print(get_previout_byday('Monday'))
print(get_previout_byday('Tuesday'))
print(get_previout_byday('Friday'))
print(get_previout_byday('Sunday', datetime(2012, 12, 21)))

Out

2016-07-20 23:17:22.582478
2016-07-18 23:17:22.582478
2016-07-19 23:17:22.582478
2016-07-15 23:17:22.582478
2012-12-16 00:00:00
posted @ 2016-07-20 23:29  4Thing  阅读(103)  评论(0编辑  收藏  举报