Python計算給定日期的周內的某一天


先理一下思路:
1、weekday會根據某個日期返回0到6的一個數字來表示星期幾對吧,0==星期一
我們來列一個表:

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

2、知道了星期幾之后,你可以計算出那一周相對於這個0到6的數字的差值(比如你確定一個比較值0,那么取得該日期的weekday值假設為n,那么這個差值就是0-n對吧,針對第一條發現的列表,假設我們指定的日期是星期二,weekday數值為1:

[0,1,2,3,4,5,6]
n

就是說n在列表中1的位置,數值也是1,那么前面星期一是否就剛好是0-1的相對位置了呢?
理解了么?0-n就剛好是星期一所代表的相對位置。
那么星期二呢?是不是就是0-n+1?
自然的,星期三就是0-n+2
0-n+3
0-n+4
0-n+5
0-n+6,就是星期日

3、知道了相對位置,那么只需要進行日期的疊加就可以了。
以下的代碼不推薦你直接使用:

import datetime,time

def thisweek(str_dat 大專欄  Python計算給定日期的周內的某一天e):
try:
#嘗試將參數轉換成為datetime.date格式,1是方便后面的日期加減,2是驗證日期是否有效。
date_input = datetime.date.fromtimestamp(time.mktime(time.strptime(str_date,"%Y-%m-%d")))
except:
raise '參數錯誤:錯誤的日期,期待值2016-01-01格式'

n = datetime.datetime.weekday(date_input)
weeklist = []
for i in range(7):
this_day=date_input + datetime.timedelta(0-n+i)
weeklist.append([i,this_day])

return weeklist

運行結果為:【星期幾,日期】,同樣0表示星期一

thisweek('2016-07-18')
[[0, datetime.date(2016, 7, 18)], [1, datetime.date(2016, 7, 19)], [2, datetime.date(2016, 7, 20)], [3, datetime.date(2016, 7, 21)], [4, datetime.date(2016, 7, 22)], [5, datetime.date(2016, 7, 23)], [6, datetime.date(2016, 7, 24)]]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM