Python取周的相關資訊的幾個函式
阿新 • • 發佈:2019-01-29
主要包括:獲取指定日期對應哪一年的第幾周、獲取當前日期對應哪一年的第幾周、獲取當前日期這一週的第一天的日期、獲取指定周的第一天日期。
/Users/nisj/PycharmProjects/EsDataProc/bi-static/getWeekInfo.py
/Users/nisj/PycharmProjects/EsDataProc/bi-static/getWeekInfo.py
# -*- coding=utf-8 -*- import datetime def getYearWeek(strdate): date = datetime.datetime.strptime(strdate, '%Y-%m-%d') YearWeek = date.isocalendar() return YearWeek def getNowYearWeek(): # 當前時間年第幾周的計算 timenow = datetime.datetime.now() NowYearWeek = timenow.isocalendar() return NowYearWeek def getDayInweekMonday(): week_num = datetime.datetime.now().weekday() Monday = datetime.datetime.now() + datetime.timedelta(days=-week_num) Monday = str(Monday)[0:10] return Monday # weekflag格式為"2016#53"(即2016年第53周) def getWeekFirstday(weekflag): year_str = weekflag[0:4] # 取到年份 week_str = weekflag[5:] # 取到周 if int(week_str)>=53: Monday = "Error,Week Num greater than 53!" else: yearstart_str = year_str + '0101' # 當年第一天 yearstart = datetime.datetime.strptime(yearstart_str, '%Y%m%d') # 格式化為日期格式 yearstartcalendarmsg = yearstart.isocalendar() # 當年第一天的周資訊 yearstartweekday = yearstartcalendarmsg[2] yearstartyear = yearstartcalendarmsg[0] if yearstartyear < int(year_str): daydelat = (8 - int(yearstartweekday)) + (int(week_str) - 1) * 7 else: daydelat = (8 - int(yearstartweekday)) + (int(week_str) - 2) * 7 Monday = (yearstart + datetime.timedelta(days=daydelat)).date() return Monday if __name__ == '__main__': strdate = '2017-01-01' print getYearWeek(strdate) print getNowYearWeek() print getDayInweekMonday() # 輸出2014年第35周的開始時間 print getWeekFirstday('2019#1')
測試結果:
/usr/bin/python /Users/nisj/PycharmProjects/EsDataProc/bi-static/getWeekInfo.py
(2016, 52, 7)
(2017, 1, 5)
2017-01-02
2018-12-31
Process finished with exit code 0