先說一下背景
app上有一個功能是查詢當前一周內產生的數據,對應的請求有2個必傳參數:startDate 和 endDate
其中 startDate 為當前一周的開始日期,如"周一 2019-12-02",endDate為當前一周的結束日期,如"周二 2019-12-08"
所以這次要做的就是構造這兩個參數
一個簡單的思考過程
1、要獲取到當前的日期
2、知道當前日期對應星期幾
3、根據今天的日期倒推出星期一是幾月幾號
4、根據周一是幾月幾號,再向未來延6天,就可以知道周日是幾月幾號
通過上述3步即可獲得“當前日期”所在周的 “周一對應幾月幾號,周日對應幾月幾號”
一個簡單的示意圖如下:
假如今天是:周四,12月5號,那么減3天,就是周一(4-3)
假如今天是:周二,12月3號,那么減1天,就是周一(2-1)
假如今天是:周一,12月2號,那么減0天,就是周一(1-0)
編寫python腳本
python中的datetime模塊可以獲取日期以及星期
# coding: utf-8 # author: hmk import datetime today = datetime.datetime.now() # 獲取今天時間 print("今天的日期是:{}".format(today.strftime("%Y-%m-%d"))) t_week = today.weekday() print("今天是星期:{}".format(t_week))
打印結果
說明:在python中周一至周日分別對應0~6
所以當前日期減去當前星期幾對應的數值,就是周一的日期了,
例如 今天是星期4,在python中對應的數值為3,星期4往前倒3天就是星期1了,也就是(4-3)
所以需要構造一個變量,用來表示需要倒退的天數
對應代碼
# coding: utf-8 # author: hmk import datetime today = datetime.datetime.now() # 獲取今天時間 print("今天的日期是:{}".format(today.strftime("%Y-%m-%d"))) t_week = today.weekday() print("今天是星期:{}".format(t_week)) offset = datetime.timedelta(days=t_week) # 定義一個變量,表示需要倒退的天數 start = today-offset # 當前日期減去offset,表示周一對應的日期 end = start+datetime.timedelta(days=6) # 周一的日期加上6天,表示周日的日期 print(start.strftime("%Y-%m-%d")+"~"+end.strftime("%Y-%m-%d"))
打印結果
這樣就構造好 startDate 和 endDate了