問題
解決方案
為了執行不同時間單位的轉換和計算,請使用 datetime 模塊。 比如,為了表示一個時間段,可以創建一個 timedelta 實例,就像下面這樣:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
>>> from datetime import timedelta >>> a = timedelta(days = 2 , hours = 6 ) >>> b = timedelta(hours = 4.5 ) >>> c = a + b >>> c.days 2 >>> c.seconds 37800 >>> c.seconds / 3600 10.5 >>> c.total_seconds() / 3600 58.5 >>> |
如果你想表示指定的日期和時間,先創建一個 datetime
實例然后使用標準的數學運算來操作它們。比如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
>>> from datetime import datetime >>> a = datetime( 2012 , 9 , 23 ) >>> print (a + timedelta(days = 10 )) 2012 - 10 - 03 00 : 00 : 00 >>> >>> b = datetime( 2012 , 12 , 21 ) >>> d = b - a >>> d.days 89 >>> now = datetime.today() >>> print (now) 2012 - 12 - 21 14 : 54 : 43.094063 >>> print (now + timedelta(minutes = 10 )) 2012 - 12 - 21 15 : 04 : 43.094063 >>> |
在計算的時候,需要注意的是 datetime
會自動處理閏年。比如:
1
2
3
4
5
6
7
8
9
10
11
|
>>> a = datetime( 2012 , 3 , 1 ) >>> b = datetime( 2012 , 2 , 28 ) >>> a - b datetime.timedelta( 2 ) >>> (a - b).days 2 >>> c = datetime( 2013 , 3 , 1 ) >>> d = datetime( 2013 , 2 , 28 ) >>> (c - d).days 1 >>> |
討論
對大多數基本的日期和時間處理問題, datetime
模塊已經足夠了。 如果你需要執行更加復雜的日期操作,比如處理時區,模糊時間范圍,節假日計算等等, 可以考慮使用 dateutil模塊
許多類似的時間計算可以使用 dateutil.relativedelta()
函數代替。 但是,有一點需要注意的就是,它會在處理月份(還有它們的天數差距)的時候填充間隙??蠢幼钋宄?/p>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
>>> a = datetime( 2012 , 9 , 23 ) >>> a + timedelta(months = 1 ) Traceback (most recent call last): File "<stdin>" , line 1 , in <module> TypeError: 'months' is an invalid keyword argument for this function >>> >>> from dateutil.relativedelta import relativedelta >>> a + relativedelta(months = + 1 ) datetime.datetime( 2012 , 10 , 23 , 0 , 0 ) >>> a + relativedelta(months = + 4 ) datetime.datetime( 2013 , 1 , 23 , 0 , 0 ) >>> >>> # Time between two dates >>> b = datetime( 2012 , 12 , 21 ) >>> d = b - a >>> d datetime.timedelta( 89 ) >>> d = relativedelta(b, a) >>> d relativedelta(months = + 2 , days = + 28 ) >>> d.months 2 >>> d.days 28 >>> |
以上就是Python 日期與時間轉換的方法的詳細內容,更多關于Python 日期與時間轉換的資料請關注服務器之家其它相關文章!
原文鏈接:https://python3-cookbook.readthedocs.io/zh_CN/latest/c03/p12_convert_days_to_seconds_and_others.html