datetime模組(轉載)
datetime模組
前言:datetime模組一般用來對時間進行計算,比如現在的兩小時後是什麼時間,幾年幾月,2050年的3月1日的前一天是幾月幾日等等。
在正題開始之前我先讓大家明白閏年和平年是怎麼計算的。
- 閏年:將年份除以4沒有餘數則為閏年,閏年的二月有29天
- 平年:將年份除以4有餘數則為平年,平年的二月有28天
搞清楚datetime模組需要清楚就需要知道datetime中的四大類
time:時間類
date:日期類
datetime:日期時間類
timedelta:時間變化類
1. time類
一般傳入三個引數,hour小時,minute分鐘,second秒,還有microsecond微秒,但一般不傳入。
datetime.time(hour, minute, second)
hour = datetime.time(hour=10, minute=20, second=40)
print(type(hour))
print(hour)
結果
<class 'datetime.time'> # 說明我們例項化了一個datetime.time類
10:20:40
檢視這個類具有哪些方法和屬性
time = datetime.time(hour=10, minute=20, second=40)
print(time)
# 格式化時間物件 str型別
print(time.strftime('%H|%M|%S'))
# 小時 int型別
print(time.hour)
# 分鐘 int型別
print(time.minute)
# 秒 int型別
print(time.second)
結果
10:20:40
10|20|40
10
20
40
2. 日期類
傳入三個引數:年,月,日
datetime.date(year, month, day)
date = datetime.date(year=2020, month=12, day=20)
print(type(date))
print(date)
結果
<class 'datetime.date'> # 例項化一個date物件
2020-12-20
日期類與時間類的方法類似,這裡就不再演示
3. timedate類
一般傳入6個引數,年,月,日,時,分,秒
datetime.datetime(year, month, day, hour, minute, second)
date_time = datetime.datetime(2000, 7, 4, 20, 30, 30)
print(type(date_time))
print(date_time)
結果
<class 'datetime.datetime'> # 例項化一個datetime物件
2000-07-04 20:30:30
- 1
- 2
- 3
- 4
- 5
- 6
- 7
具有的屬性和方法
date_time = datetime.datetime(2000, 7, 4, 20, 30, 30)
print(date_time.replace(year=2010, day=3)) # 替換時間日期
date = date_time.date() # 獲取日期物件,與上面的日期物件一樣
print(type(date))
time = date_time.time() # 獲取時間物件,與上面的時間物件一樣
print(type(time))
結果
2010-07-03 20:30:30
<class 'datetime.date'>
<class 'datetime.time'>
4. timedelta類
首先我們先搞清楚delta Δ是什麼意思,假設我們從一個地方出發,起始時間為t1,終點時間為t2,那麼我們花費的時間就為t2-t1,我們就可以表示為Δt,此時的delta就代表兩個時間段的差值,也就是時間變化量。datetime模組主要是用來計算時間的,所以也有這個概念。
注意:timedelta只能與date類,datetime類還有本身進行計算,且不能傳入年份,月份
一般傳入四個引數:日,時,分,秒用來計算
與本身進行計算
delta1 = datetime.timedelta(days=2, hours=8, minutes=30, seconds=20)
delta2 = datetime.timedelta(days=1, hours=4)
print(delta1-delta2)
結果
1 day, 4:30:20
與date類進行計算
delta1 = datetime.timedelta(days=2, hours=8, minutes=30, seconds=20)
date = datetime.date(year=2020, month=7, day=6)
print(type(date-delta1))
print(date-delta1)
結果
<class 'datetime.date'> # date型別與delta相減結果仍是date型別
2020-07-04
與datetime類進行計算
delta1 = datetime.timedelta(days=2, hours=8, minutes=30, seconds=20)
date_time = datetime.datetime(year=2020, month=7, day=4)
print(type(date_time-delta1))
print(date_time-delta1)
結果
<class 'datetime.datetime'> # 仍是datetime.datetime型別
2020-07-01 15:29:40
習
介紹完這幾個大類後我們來做一個練習,使用datetime模組來計算使用者輸入的的年份是平年還是閏年
思路:我們可以先建立一個date類或者datetime類,傳入使用者輸入的年份,month=3, days=1,第二步建立一個timedelta類,傳入引數 days=1,然後用建立的類減去timedelta類即可或者二月份的最後一天,如果是29則為閏年,為28則為平年。
year = int(input('請輸入年份:'))
t = datetime.datetime(year=year, month=3, day=1)
td = datetime.timedelta(days=1)
res = t - td
if res.day == 29:
print('{}年是閏年'.format(year))
elif res.day == 28:
print('{}年是平年'.format(year))
結語:時間就像海綿裡的水,只要願擠,總還是有的。——魯迅