你們好,很高興你能夠看到這篇小小的隨筆。函數
本文緣起於近日在團隊中給小白同事科普Python的使用,在留做業時想到了這個題目「經過給定日期和間隔日期天數,獲得間隔日期天數後的日期和星期」。post
本覺得是道簡單題目,本身在實現時發現有點兒意思,因而post於此以供回憶。spa
其實題目的思路很簡單,就是利用Python中的時間序列(時間戳)將輸入日期轉換成時間戳,並將間隔天數也轉換成對應的總秒數,以後二者相加獲得一個新的時間戳,再將新的時間戳轉換成輸出的日期/星期等形式便可。其中須要考慮兩個問題:1)輸入的日期須要進行統一的格式化,2)Python的時間戳的起始時間是「1970年1月1日0時0分1秒」,若是輸入的日期或是計算間隔後的日期是早於這個系統的設置點會發生錯誤。設計
類似的操做在Excel中也能夠實現,在Windows版中Excel的時間序列最先的日期是「1900年1月1日」,Mac版本請查閱相關資料。code
最後是代碼實現,這應該只是其中的一種可能,留此供本身往後須要參照。orm
1 # 設計一個函數,輸入值爲指定日期和間隔天數,輸出值爲指定日期在通過間隔天數以後的日期和星期。 2 import time 3 4 def DateDeltaCal(SpecificDate,DeltaDateValue): 5 try: 6 # Format Input Date data 7 timeArray = time.strptime(SpecificDate, "%Y-%m-%d") 8 timeStamp = int(time.mktime(timeArray)) 9 10 # Calculate Delta Second 11 DeltaMSecond = int(DeltaDateValue * 86400) 12 13 # Delta Time Stamp 14 DeltaResult = timeStamp + DeltaMSecond 15 16 # Convert Time Stamp to recoganized format 17 localTime = time.localtime(int(DeltaResult)) 18 dateResult = time.strftime("%Y-%m-%d", localTime) 19 weekdayResult = time.strftime("%A", localTime) 20 21 return dateResult,weekdayResult 22 23 except: 24 print("Wrong format (should like: YYYY-MM-DD) or earlier than year 1970.") 25 26 # Input specific date and delta days 27 CurrentDate = "2020-6-1" 28 DeltaDate = -137 29 OutputResult = DateDeltaCal(CurrentDate,DeltaDate) 30 31 # Formatted to print results 32 print("Passed %d day(s) from %s, it will be %s, %s." %(DeltaDate,CurrentDate,OutputResult[0],OutputResult[1])) 33 34 print("\n")