Python日期時間處理庫dateutil詳解
簡介
dateutil 為 Python 標準庫 datetime 提供了強大的擴展
功能:
- 相對時間,如下周一、下個月、明年
- 兩個日期間的差
- 靈活日期解析。使用iCalendar規(guī)范的超集,支持 RFC 字符串解析
- 幾乎所有字符串格式的日期解析
- 實現(xiàn)各種各樣格式文件
- 最新世界時區(qū)信息
- 計算任何給定年份的復活節(jié)星期日日期
- 全面的測試套件
安裝
pip install python-dateutil
初試
from dateutil.parser import parse
from dateutil.easter import easter
from dateutil.rrule import rrule, YEARLY, FR
from dateutil.relativedelta import relativedelta
now = parse('May 20 13:14:00 UTC 2020') # UTC為世界統(tǒng)一時間
today = now.date() # 轉換為日期
year = rrule(YEARLY, dtstart=now, bymonth=8, bymonthday=13, byweekday=FR)[0].year
rdelta = relativedelta(easter(year), today)
print('這一天是: {}'.format(today))
print('下一個8.13為周五在 {} 年'.format(year))
print('那一年的復活節(jié)離現(xiàn)在有多遠: {}'.format(rdelta))
print('那一年的復活節(jié)日期: {}'.format(today + rdelta))
# 今天是: 2020-05-20
# 下一個8.13為周五在 2021 年
# 那一年的復活節(jié)離現(xiàn)在有多遠: relativedelta(months=+10, days=+15)
# 那一年的復活節(jié)日期: 2021-04-04
日期比較
from dateutil.parser import parse
print(parse('2022-09-06') > parse('2022-09-05')) # True
print(parse('2022-09-06 10:00:00') > parse('2022-09-05 00:00:00')) # True
相對時間
使用 dateutil.relativedelta 類初始化設置的參數(shù),并進行 + 操作
相對時間:years, months, days 等,帶 s 結尾
絕對時間:year, month, day 等
import calendar
from datetime import date, datetime
from dateutil.relativedelta import *
NOW = datetime.now()
TODAY = date.today()
print('現(xiàn)在時間', NOW)
print('今天日期', TODAY)
print('下個月', NOW + relativedelta(months=+1)) # 注意參數(shù)有s
print('下個月再加一周', NOW + relativedelta(months=+1, weeks=+1))
print('下個月再加一周的早上10點', TODAY + relativedelta(months=+1, weeks=+1, hour=10)) # 注意用的是日期,且hour沒s
print('一年前一個月', NOW + relativedelta(years=+1, months=-1))
print('下周五', TODAY + relativedelta(weekday=FR))
print('下周五', TODAY + relativedelta(weekday=calendar.FRIDAY))
print('下周三', TODAY + relativedelta(weekday=WE(+1))) # 如果今天為周三則返回今天
print('下周三', TODAY + relativedelta(days=+1, weekday=WE(+1))) # 即使今天周三也返回下周三
print('這個月最后的周五', TODAY + relativedelta(day=31, weekday=FR(-1)))
print('距離下個世紀還有', relativedelta(datetime(2100, 1, 1), TODAY)) # 作差
print('2020年母親節(jié)', datetime(2020, 5, 1) + relativedelta(weekday=SU(+2))) # 公歷5月第2個周日是母親節(jié)
print('XerCis幾歲了', relativedelta(NOW, datetime(1997, 6, 19, 12, 0)))
print('今年第260天的日期', date(2020, 1, 1) + relativedelta(yearday=260))
處理不同天數(shù)的月份永遠不會跨越月的邊界,年同理
from datetime import date from dateutil.relativedelta import relativedelta # 處理不同天數(shù)的月份永遠不會跨越月的邊界 print(date(2003, 1, 27) + relativedelta(months=+1)) # 2003-02-27 print(date(2003, 1, 31) + relativedelta(months=+1)) # 2003-02-28 print(date(2003, 1, 31) + relativedelta(months=+2)) # 2003-03-31 # 年同理 print(date(2000, 2, 28) + relativedelta(years=+1)) # 2001-02-28 print(date(2000, 2, 29) + relativedelta(years=+1)) # 2001-02-28
解析日期時間
from dateutil import parser
d = parser.isoparse('2021-06-10T15:10:30+08:00')
print(type(d))
print(d)
# <class 'datetime.datetime'>
# 2021-06-10 15:10:30+08:00
參考文獻
到此這篇關于Python日期時間處理庫dateutil的文章就介紹到這了,更多相關Python時間處理庫dateutil內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python+Qt身體特征識別人數(shù)統(tǒng)計源碼窗體程序(使用步驟)
這篇文章主要介紹了Python+Qt身體特征識別人數(shù)統(tǒng)計源碼窗體程序(使用步驟),本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12
python庫umap有效地揭示高維數(shù)據(jù)的結構和模式初探
這篇文章主要介紹了python庫umap有效地揭示高維數(shù)據(jù)的結構和模式初探,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01
python實現(xiàn)顏色rgb和hex相互轉換的函數(shù)
這篇文章主要介紹了python實現(xiàn)顏色rgb和hex相互轉換的函數(shù),可實現(xiàn)將rgb表示的顏色轉換成hex值的功能,非常具有實用價值,需要的朋友可以參考下2015-03-03
win10系統(tǒng)配置GPU版本Pytorch的詳細教程
這篇文章主要介紹了win10系統(tǒng)配置GPU版本Pytorch,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04

