簡述Python培訓(xùn)之time和datetime的區(qū)別
今天扣丁學(xué)堂給大家來詳細(xì)介紹一下Python中提供了對時間日期的多種多樣的處理方式,主要是在time和datetime這兩個模塊里。今天扣丁學(xué)堂小編給為大家整一下Pyrthon視頻教程之兩個模塊在使用上的區(qū)別。
Python表示時間的兩種方式:
1、時間戳(相對于1970.1.100:00:00以秒計算的偏移量),時間戳是惟一的
2、時間元組即(struct_time),共有九個元素,分別表示,同一個時間戳的struct_time會因為時區(qū)不同而不同。
struct_time元組共有9個元素,分別含義如下:
tm_year(年)四位數(shù)字,如:2017
tm_mon(月)1-12
tm_mday(日)1-31
tm_hour(時)0-23
tm_min(分)0-59
tm_sec(秒)0-61
tm_wday(weekday)0-6(0表示周日)
tm_yday(一年中的第幾天)1-366
tm_isdst(是否是夏令時)默認(rèn)為-1
time
在Python文檔里,time是歸類在GenericOperatingSystemServices中,換句話說,它提供的功能是更加接近于操作系統(tǒng)層面的。通讀文檔可知,time模塊是圍繞著UnixTimestamp進行的。
該模塊主要包括一個類struct_time,另外其他幾個函數(shù)及相關(guān)常量。需要注意的是在該模塊中的大多數(shù)函數(shù)是調(diào)用了所在平臺Clibrary的同名函數(shù),所以要特別注意有些函數(shù)是平臺相關(guān)的(如:time.clock()),可能會在不同的平臺有不同的效果。另外一點是,由于是基于UnixTimestamp,所以其所能表述的日期范圍被限定在1970-2038之間,如果你寫的代碼需要處理在前面所述范圍之外的日期,那可能需要考慮使用datetime模塊更好。
常用方法:
1、time.sleep(secs)#推遲指定的時間(secs)后繼續(xù)運行
2、time.localtime([secs])#將一個時間戳轉(zhuǎn)換成一個當(dāng)前時區(qū)的struct_time,如果seconds參數(shù)未輸入,則以當(dāng)前時間為轉(zhuǎn)換標(biāo)準(zhǔn)、、,未提供secs參數(shù)時,按當(dāng)前時間為準(zhǔn)
3、time.strftime(format[,t])#將指定的struct_time(默認(rèn)為當(dāng)前時間),根據(jù)指定的格式化字符串輸出
4、time.time()#返回當(dāng)前時間的時間戳
5、time.mktime(t)#將一個struct_time轉(zhuǎn)換為時間戳,如下time.localtime接收一個時間戳返回一個struct_time,而time.mktime接收一個struct_time,返回一個時間戳
6、time.gmtime([secs])#和localtime()方法類似,gmtime()方法是將一個時間戳轉(zhuǎn)換為UTC時區(qū)(0時區(qū))的struct_time
7、time.clock()#這個需要注意,在不同的系統(tǒng)上含義不同。在UNIX系統(tǒng)上,它返回的是“進程時間”,它是用秒表示的浮點數(shù)(時間戳)。而在WINDOWS中,第一次調(diào)用,返回的是進程運行的實際時間。而第二次之后的調(diào)用是自第一次調(diào)用以后到現(xiàn)在的運行時間。(實際上是以WIN32上QueryPerformanceCounter()為基礎(chǔ),它比毫秒表示更為精確)
8、time.asctime([t])#把一個表示時間的元組或者struct_time表示為這種形式:'SunJun2023:21:051993'。如果沒有參數(shù),將會將time.localtime()作為參數(shù)傳入
9、time.ctime([secs]):把一個時間戳(按秒計算的浮點數(shù))轉(zhuǎn)化為time.asctime()的形式。如果參數(shù)未給或者為None的時候,將會默認(rèn)time.time()為參數(shù)。它的作用相當(dāng)于time.asctime(time.localtime(secs))
10、time.strftime(format[,t])#把一個代表時間的元組或者struct_time(如由time.localtime()和time.gmtime()返回)轉(zhuǎn)化為格式化的時間字符串。如果t未指定,將傳入time.localtime()。如果元組中任何一個元素越界,ValueError的錯誤將會被拋出
代碼實例:
>>>importtime
使用time模塊,首先得到當(dāng)前的時間戳
>>>time.time()
1513855961.782587
將時間戳轉(zhuǎn)換為時間元組struct_time
>>>time.localtime(time.time())
time.struct_time(tm_year=2017,tm_mon=12,tm_mday=21,tm_hour=19,tm_min=33,tm_sec=17,tm_wday=3,tm_yday=355,tm_isdst=0)
格式化輸出想要的時間
>>>time.strftime('%Y-%m-%d%H:%M:%S',time.localtime(time.time()))
'2019-12-2119:33:40'
接上文,不加參數(shù)時,默認(rèn)就是輸出當(dāng)前的時間
>>>time.strftime('%Y-%m-%d%H:%M:%S')
'2019-12-2119:33:53'
使用的時候需要注意一下使用的時區(qū)。
datetime
datetime比time高級了不少,可以理解為datetime基于time進行了封裝,提供了更多實用的函數(shù)。在datetime模塊中包含了幾個類,具體如下:
timedelta#主要用于計算時間跨度
tzinfo#時區(qū)相關(guān)
time#只關(guān)注時間
date#只關(guān)注日期
datetime#同時有時間和日期
在實際實用中,用得比較多的是datetime.datetime和datetime.timedelta,另外兩個datetime.date和datetime.time實際使用和datetime.datetime并無太大差別。對于一個datetime.datetime實例,主要會有以下屬性及常用方法:
datetime.year
datetime.month
datetime.day
datetime.hour
datetime.minute
datetime.second
datetime.microsecond
datetime.tzinfo#時區(qū)
datetime.date()#返回date對象
datetime.time()#返回time對象
datetime.replace(name=value)#前面所述各項屬性是read-only的,需要此方法才可更改
datetime.timetuple()#返回time.struct_time對象
dattime.strftime(format)#按照format進行格式化輸出
除了實例本身具有的方法,類本身也提供了很多好用的方法:
datetime.today()a#當(dāng)前時間,localtime
datetime.now([tz])#當(dāng)前時間默認(rèn)localtime
datetime.utcnow()#UTC時間
datetime.fromtimestamp(timestamp[,tz])#由UnixTimestamp構(gòu)建對象
datetime.strptime(date_string,format)#給定時間格式解析字符串
使用timedelta也算是比較簡單的:
>>>importdatetime
>>>time_now=datetime.datetime.now()
>>>time_now
datetime.datetime(2019,12,21,19,35,59,129648)
>>>time_now.strftime('%Y-%m-%d%H:%M:%S')
'2019-12-2119:35:59'
>>>delta=datetime.timedelta(hours=24)
>>>print(time_now+delta)
2019-12-2219:35:59.129648
>>>print(time_now-delta)
2016-10-2620:46:16.657523
>>>print(time_now-delta)
2019-12-2019:35:59.129648
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。