利用Python將時(shí)間或時(shí)間間隔轉(zhuǎn)為ISO 8601格式方法示例
前言
大家都知道,Python自帶的datetime庫提供了將datetime轉(zhuǎn)為ISO 8610格式的函數(shù),但是對于時(shí)間間隔(inteval)并沒有提供轉(zhuǎn)換的函數(shù),下面我們動(dòng)手寫一個(gè)。 下面話不多說了,來一起看看詳細(xì)的介紹吧。
對于時(shí)間間隔,ISO 8601的表示形式如下:

P表示的是時(shí)間間隔的前綴。YMDHMS分別表示年月日時(shí)分秒,W表示周。T表示后面的字符是精確到天的,也就是以小時(shí)表示開始的前綴。
英文解釋如下 :
[P] is used as time-interval (period) designator, preceding a data element which represents a given duration of a time-interval;
The character [T] shall be used as time designator to indicate the start of the representation of time of the day in date and time expressions.
下面是實(shí)現(xiàn)代碼:
# -*- encoding: utf-8 -*- import datetime def isoformat(time): ''' 將datetime或者timedelta對象轉(zhuǎn)換成ISO 8601時(shí)間標(biāo)準(zhǔn)格式字符串 :param time: 給定datetime或者timedelta :return: 根據(jù)ISO 8601時(shí)間標(biāo)準(zhǔn)格式進(jìn)行輸出 ''' if isinstance(time, datetime.datetime): # 如果輸入是datetime return time.isoformat(); elif isinstance(time, datetime.timedelta): # 如果輸入時(shí)timedelta,計(jì)算其代表的時(shí)分秒 hours = time.seconds // 3600 minutes = time.seconds % 3600 // 60 seconds = time.seconds % 3600 % 60 return 'P%sDT%sH%sM%sS' % (time.days, hours, minutes, seconds) # 將字符串進(jìn)行連接 if __name__ == '__main__': dtnow = datetime.datetime.now() # 獲取現(xiàn)在時(shí)間 print(isoformat(dtnow)) dtpast = datetime.datetime(1990, 12, 31) # 獲取過去某個(gè)時(shí)間點(diǎn) print(isoformat(dtpast)) interval = dtnow - dtpast # 得到時(shí)間差 print(interval) print(isoformat(interval))
輸出結(jié)果如下:
2017-01-14T10:54:28.323000 1990-12-31T00:00:00 9511 days, 10:54:28.323000 P9511DT10H54M28S
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Python中Arrow庫的時(shí)間操作技法總結(jié)
Arrow是一個(gè)功能強(qiáng)大、易用且具有優(yōu)雅設(shè)計(jì)的Python日期時(shí)間庫,它建立在Python的datetime模塊之上,旨在彌補(bǔ)datetime模塊在處理日期時(shí)間時(shí)的一些不足之處,下面我們就來了解一下Arrow庫的常見時(shí)間操作吧2023-12-12
使用Python和百度語音識(shí)別生成視頻字幕的實(shí)現(xiàn)
這篇文章主要介紹了使用Python和百度語音識(shí)別生成視頻字幕,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Python利用Flask-Mail實(shí)現(xiàn)發(fā)送郵件詳解
Flask?的擴(kuò)展包?Flask?-?Mail?通過包裝了?Python?內(nèi)置的smtplib包,可以用在?Flask?程序中發(fā)送郵件。本文將利用這特性實(shí)現(xiàn)郵件發(fā)送功能,感興趣的可以了解一下2022-08-08
Python實(shí)現(xiàn)隨機(jī)生成手機(jī)號及正則驗(yàn)證手機(jī)號的方法
這篇文章主要介紹了Python實(shí)現(xiàn)隨機(jī)生成手機(jī)號及正則驗(yàn)證手機(jī)號的方法,涉及Python基于random模塊的隨機(jī)數(shù)以及基于re模塊的正則驗(yàn)證相關(guān)操作技巧,需要的朋友可以參考下2018-04-04
Python 中開發(fā)pattern的string模板(template) 實(shí)例詳解
這篇文章主要介紹了Python 中開發(fā)pattern的string模板(template) 實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04
Python3.5 Json與pickle實(shí)現(xiàn)數(shù)據(jù)序列化與反序列化操作示例
這篇文章主要介紹了Python3.5 Json與pickle實(shí)現(xiàn)數(shù)據(jù)序列化與反序列化操作,結(jié)合實(shí)例形式分析了Python3.5使用Json與pickle模塊實(shí)現(xiàn)json格式數(shù)據(jù)的序列化及反序列化操作相關(guān)步驟與注意事項(xiàng),需要的朋友可以參考下2019-04-04

