from datetime import datetime, timedelta, date '''今天''' today1 = date.today() # 精確到`天` today2 = datetime.today() # 精確到`微秒` str(today1), str(today2) # 結果: # datetime.date(2015, 11, 20) # datetime.datetime(2015, 11, 20, 16, 26, 21, 593990) # ('2015-11-20', '2015-11-20 16:26:21.593990) '''昨天''' yesterday1 = date.today() + timedelta(days=-1) yesterday2 = datetime.today() + timedelta(days=-1) str(yesterday1), str(yesterday2) # 結果: # datetime.date(2015, 11, 19) # datetime.datetime(2015, 11, 19, 16, 26, 21, 593990) # ('2015-11-19', '2015-11-19 16:26:21.593990) '''明天''' tomorrow1 = date.today() + timedelta(days=1) tomorrow2 = datetime.today() + timedelta(days=1) str(tomorrow1), str(tomorrow2) # 結果: # datetime.date(2015, 11, 21) # datetime.datetime(2015, 11, 21, 16, 26, 21, 593990) # ('2015-11-21', '2015-11-21 16:26:21.593990)
那獲取幾小時,幾分鐘,甚至幾秒鐘先後的時間呢?該怎麼獲取?python
看以下的代碼:git
from datetime import datetime, timedelta # 獲取兩小時前的時間 date_time = datetime.today() + timedelta(hours=-2)
其實就是給 timedelta()
這個類傳入的參數變一下就能夠了github
可傳入的參數有 timedelta(weeks, days, hours, second, milliseconds, microseconds)
每一個參數都是可選參數,默認值爲0,參數值必須是這些(整數
,浮點數
,正數
,負數
)函數
分別表示:timedelta(周,日,時,分,秒,毫秒,微秒)
。也只能傳入這7個參數code
說明:timedelta 這個對象實際上是用來表示兩個時間的間隔對象
上面咱們都是使用 datetime.today() 加上 timedelta()
,那若是是 datetime.today() 減去 timedelta()
這樣呢? 其實得出結果就是相反而已,不明白能夠動手試一下,對比一下 +
或 -
以後的結果。get
由於 timedelta()
這個對象傳入的參數最大日期時間單位是周
,最小的是 微秒
,
因此,關於 年
和 月
須要咱們手動處理一下it
import datetime import calendar def conver(value, years=0, months=0): if months: more_years, months = divmod(months, 12) years += more_years if not (1 <= months + value.month <= 12): more_years, months = divmod(months + value.month, 12) months -= value.month years += more_years if months or years: year = value.year + years month = value.month + months # 此月份的的天號不存在轉換後的月份裏,將引起一個 ValueError 異常 # 好比,1月份有31天,2月份有29天,我須要1月31號的後一個月的日期,也就是2月31號,可是2月份沒有31號 # 因此會引起一個 ValueError 異常 # 下面這個異常處理就是爲了解決這個問題的 try: value = value.replace(year=year, month=month) except ValueError: _, destination_days = calendar.monthrange(year, month) day = value.day - destination_days month += 1 if month > 12: month = 1 year += 1 value = value.replace(year=year, month=month, day=day) return value today = datetime.datetime.today() print today # 今天日期 print conver(today, months=1) # 1月後 print conver(today, months=-1) # 1月前 print conver(today, years=1) # 1年後 # 結果 # datetime.datetime(2015, 11, 20, 16, 26, 21, 593990) # datetime.datetime(2015, 12, 20, 16, 26, 21, 593990) # datetime.datetime(2015, 10, 20, 16, 26, 21, 593990) # datetime.datetime(2016, 11, 20, 16, 26, 21, 593990)
代碼取自 when.py 的
_add_time
函數部分代碼io