利用Python將時間或時間間隔轉為ISO 8601格式方法示例
前言
大家都知道,Python自帶的datetime庫提供了將datetime轉為ISO 8610格式的函數(shù),但是對于時間間隔(inteval)并沒有提供轉換的函數(shù),下面我們動手寫一個。 下面話不多說了,來一起看看詳細的介紹吧。
對于時間間隔,ISO 8601的表示形式如下:
P表示的是時間間隔的前綴。YMDHMS分別表示年月日時分秒,W表示周。T表示后面的字符是精確到天的,也就是以小時表示開始的前綴。
英文解釋如下 :
[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.
下面是實現(xiàn)代碼:
# -*- encoding: utf-8 -*- import datetime def isoformat(time): ''' 將datetime或者timedelta對象轉換成ISO 8601時間標準格式字符串 :param time: 給定datetime或者timedelta :return: 根據(jù)ISO 8601時間標準格式進行輸出 ''' if isinstance(time, datetime.datetime): # 如果輸入是datetime return time.isoformat(); elif isinstance(time, datetime.timedelta): # 如果輸入時timedelta,計算其代表的時分秒 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) # 將字符串進行連接 if __name__ == '__main__': dtnow = datetime.datetime.now() # 獲取現(xiàn)在時間 print(isoformat(dtnow)) dtpast = datetime.datetime(1990, 12, 31) # 獲取過去某個時間點 print(isoformat(dtpast)) interval = dtnow - dtpast # 得到時間差 print(interval) print(isoformat(interval))
輸出結果如下:
2017-01-14T10:54:28.323000 1990-12-31T00:00:00 9511 days, 10:54:28.323000 P9511DT10H54M28S
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
Python 游戲大作炫酷機甲闖關游戲爆肝數(shù)千行代碼實現(xiàn)案例進階
本篇文章給大家?guī)鞵ython的一個游戲大制作—機甲闖關冒險,數(shù)千行代碼實現(xiàn)的游戲,過程很詳細,對大家的學習或工作具有一定的借鑒價值,需要的朋友可以參考下2021-10-10python如何實現(xiàn)數(shù)據(jù)的線性擬合
這篇文章主要為大家詳細介紹了python如何實現(xiàn)數(shù)據(jù)的線性擬合,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07搭建Python的Django框架環(huán)境并建立和運行第一個App的教程
時至今日Django仍然是人氣最高的Web開發(fā)框架,MVC結構清晰內置功能強大,這里我們就來共同學習搭建Python的Django框架環(huán)境并建立和運行第一個App的教程2016-07-07Python操作數(shù)據(jù)庫之數(shù)據(jù)庫編程接口
這篇文章主要介紹了Python操作數(shù)據(jù)庫之數(shù)據(jù)庫編程接口,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-06-06