在前面的章節中已經介紹了一些 Python 常用的模塊,本節再介紹兩個模塊 datetime 模塊和 time 模塊,這兩個模塊主要用於轉換日期格式的功能。
datetime 模塊是 Python 內置的功能模塊,它可以實現對日期的算數運算,以指定的方式格式化日期。datetime 模塊內含有一個同名的 datetime 類,該類中包含多個操作日期的函數,例如:datetime.now()、datetime.fromtimestamp()、datetime.timedelta()等,下面逐一舉例說明。
datetime()構造函數datetime 類提供了一個now()的方法可以獲取當前日期和時間,還提供了帶參數的構造函數datetime(),可以通過傳入特定的數字返回不同的datetime 對象。例如:
import datetime#當前日期和時間print(datetime.datetime.now())2019-09-30 22:19:37.582514
#獲取指定時間datetest = datetime.datetime(2019,9,30,22,22,0)print(datetest)2019-09-30 22:22:00
#獲取日期的年月日時分秒print(str(datetest.year)+"-"+str(datetest.month)+"-"+str(datetest.day)+" "+str(datetest.hour)+":"+str(datetest.minute)+":"+str(datetest.second))2019-9-30 22:22:0fromtimestamp()函數fromtimestamp()函數可以將時間戳轉換成 datetime 對象。例如:
import datetimedt1 = datetime.datetime.fromtimestamp(10000)dt2 = datetime.datetime.fromtimestamp(time.time())
print(dt1)print(dt2)
1970-01-01 10:46:402019-09-30 23:28:47.629210strptime()和strftime()函數使用strptime()函數可以將日期字符串轉換成 datetime 類型,strftime()函數可以將 datetime 類型轉換成字符串。例如:
import datetime#日期轉換datestr = datetime.strptime('2019-9-30 22:10:00', '%Y-%m-%d %H:%M:%S')now = datetime.now()print(datestr)print(now.strftime('%a, %b %d %H:%M'))
2019-09-30 22:10:00Tue, Oct 01 00:02timedelta()函數timedelta()函數返回一個 timedelta 類型的數據,它表示一段時間而不是一個時刻,多用於日期的增加和減少場景。例如:
import datetime#日期增加和減少now = datetime.datetime.now()print(now)
newdate = now + datetime.timedelta(hours=10)print(newdate)
newdate = now - datetime.timedelta(days=1)print(newdate)
2019-10-01 00:23:50.1521182019-10-01 10:23:50.1521182019-09-30 00:23:50.152118time模塊與 datetime 模塊有所不同,time 模塊主要功能是讀取系統時鐘的當前時間。其中,time.time() 和 time.sleep() 是兩個最常用的模塊。
time()函數time.time() 函數返回的值是帶小數點的,它表示從 Unix 紀元(1970年1月1日0點)到執行代碼那一刻所經歷的時間的秒數,這個數字稱為UNIX紀元時間戳。例如:
import timeprint ("當前時間戳為:", time.time())
當前時間戳為: 1569770357.6496012在項目開發中,我們經常需要計算一段代碼的執行時間,就可以用紀元時間戳來實現。例如:
import timedef calculateTime(): item = 1 for i in range(1,100000): item = item + i return item
startTime = time.time()result = calculateTime()endTime = time.time()print('計算結果:'+ str(result))print('執行時間:'+ str(endTime - startTime))
計算結果:4999950001執行時間:0.020943403244018555在代碼中,函數calculateTime()是需要執行的代碼塊,變量 startTime 表示開始時間,變量 endTime 表示結束時間,endTime-startTime表示代碼塊運行的間隔時間。
sleep()函數如果需要讓程序暫停一下,可以使用time.sleep()函數。sleep()函數有個參數,表示需要暫停的秒數。例如:
import timefor i in range(2): print('one') print(time.time()) time.sleep(1) print('two') print(time.time()) time.sleep(1)print('運行完成')
one1569772121.6350794two1569772122.637142one1569772123.639813two1569772124.6423109運行完成從上面程序的執行結果可以看出以下幾點:
列印one和列印two之間每次都間隔了一秒,因為time.time()函數輸出結果的精確度比較高,會存在些許誤差。
time.sleep()函數會阻塞代碼,只有當time.sleep()中的秒數流逝後,才會執行後續代碼
總結本節給大家介紹了 Python 中 datetime 和 time 模塊的常用操作,對 Python 工程師實現系統日期顯示和轉換功能提供了支撐。
示例代碼https://github.com/layne0031/python-100-day.git
參考[1] Python編程快速上手 https://item.jd.com/11943853.html[2] https://www.liaoxuefeng.com/wiki/1016959663602400/1017648783851616