<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
關於日期處理,Python 提供了很多的庫,比如標準庫 datetime、第三方庫 dateutil、arrow 等等。這裡介紹一個我個人最喜歡的庫 pendulum,用起來可以說非常的方便,任何對日期的操作它都能滿足。
在使用之前需要先安裝,直接 pip install pendulum 即可。
下面來看一下用法,首先是 datetime, date, time 的建立。
import pendulum dt = pendulum.datetime( 2022, 3, 28, 20, 10, 30) print(dt.__class__) print(dt) """ <class 'pendulum.datetime.DateTime'> 2022-03-28T20:10:30+00:00 """ # 建立的物件是 DateTime 型別 # 並且帶有時區,預設是 UTC # 我們可以換一個時區 dt = pendulum.datetime( 2022, 3, 28, 20, 10, 30, tz="Asia/Shanghai") print(dt) """ 2022-03-28T20:10:30+08:00 """ # 如果不想要時區,那麼指定 tz=None dt = pendulum.datetime( 2022, 3, 28, 20, 10, 30, tz=None) print(dt) """ 2022-03-28T20:10:30 """ # 然後是 date 的建立 d = pendulum.date(2022, 3, 28) print(d.__class__) print(d) """ <class 'pendulum.date.Date'> 2022-03-28 """ # time 的建立 t = pendulum.time(20, 10, 30) print(t.__class__) print(t) """ <class 'pendulum.time.Time'> 20:10:30 """
如果建立 datetime 時,時區預設是 UTC。如果不想要時區,或者希望時區是本地時區,那麼 pendulum 還專門提供了兩個方法。
import pendulum # 建立 datetime 時設定為本地時區 # 還是呼叫了 pendulum.datetime 函數 # 但是 tz 被設定成了 pendulum.local_timezone() dt = pendulum.local( 2022, 3, 28, 20, 10, 30) print(dt) """ 2022-03-28T20:10:30+08:00 """ print(pendulum.local_timezone()) """ Timezone('Asia/Shanghai') """ # 建立 datetime 時不設定時區 # 內部也是呼叫了 pendulum.datetime 函數 # 但是 tz 為 None dt = pendulum.naive(2022, 3, 28, 20, 10, 30) print(dt) """ 2022-03-28T20:10:30 """
然後 pendulum 還提供了幾個方法,比如建立當前的 datetime,date 等等。
import pendulum # 建立當前的 datetime # 預設是本地時區,但時區可以指定 dt = pendulum.now() print(dt) """ 2022-05-29T20:40:49.632182+08:00 """ # 建立當前的 date,但返回的仍是 datetime # 只不過時分秒均為 0,同樣可以指定時區 dt = pendulum.today() print(dt) """ 2022-05-29T00:00:00+08:00 """ # 獲取明天對應的 date # 返回的是 datetime,時分秒為 0 # 時區可以指定,預設是本地時區 dt = pendulum.tomorrow() print(dt) """ 2022-05-30T00:00:00+08:00 """ # 獲取昨天對應的 date dt = pendulum.yesterday() print(dt) """ 2022-05-28T00:00:00+08:00 """
我們還可以根據時間戳或者字串來建立:
import pendulum # 根據時間戳建立 dt1 = pendulum.from_timestamp(1653828466) dt2 = pendulum.from_timestamp(1653828466, tz=pendulum.local_timezone()) print(dt1) print(dt2) """ 2022-05-29T12:47:46+00:00 2022-05-29T20:47:46+08:00 """ # 根據字串建立 dt1 = pendulum.parse("2020-05-03 12:11:33") dt2 = pendulum.parse("2020-05-03 12:11:33", tz=pendulum.local_timezone()) print(dt1) print(dt2) """ 2020-05-03T12:11:33+00:00 2020-05-03T12:11:33+08:00 """
datetime、date、time 的建立我們說完了,然後再來看看它們支援的操作,這也是最核心的部分。
datetime 相關操作
操作非常多,我們逐一介紹。
import pendulum dt = pendulum.local( 2022, 3, 28, 20, 10, 30) # 獲取 date 部分和 time 部分 print(dt.date()) print(dt.time()) """ 2022-03-28 20:10:30 """ # 替換掉 dt 的某部分,返回新的 datetime # 年月日時分秒、以及時區都可以替換 print(dt.replace(year=9999)) """ 9999-03-28T20:10:30+08:00 """ # 轉成時間戳 print(dt.timestamp()) """ 1648469430.0 """ # 返回年、月、日、時、分、秒、時區 print(dt.year, dt.month, dt.day) print(dt.hour, dt.minute, dt.second) print(dt.tz) """ 2022 3 28 20 10 30 Timezone('Asia/Shanghai') """
然後是生成字串,pendulum.DateTime 物件可以轉成各種格式的日期字串。
import pendulum dt = pendulum.local( 2022, 3, 28, 20, 10, 30) # 下面四個最為常用 print("datetime:", dt.to_datetime_string()) print("date:", dt.to_date_string()) print("time:", dt.to_time_string()) print("iso8601:", dt.to_iso8601_string()) """ datetime: 2022-03-28 20:10:30 date: 2022-03-28 time: 20:10:30 iso8601: 2022-03-28T20:10:30+08:00 """ # 當然還支援很多其它格式,不過用的不多 # 隨便挑幾個吧 print("atom:", dt.to_atom_string()) print("rss:", dt.to_rss_string()) print("w3c:", dt.to_w3c_string()) print("cookie:", dt.to_cookie_string()) print("rfc822:", dt.to_rfc822_string()) """ atom: 2022-03-28T20:10:30+08:00 rss: Mon, 28 Mar 2022 20:10:30 +0800 w3c: 2022-03-28T20:10:30+08:00 rfc822: Mon, 28 Mar 22 20:10:30 +0800 """
我們有時也需要判斷當前日期是星期幾、在當前這一年是第幾天等等,pendulum 也已經幫我們封裝好了。
import pendulum dt = pendulum.local( 2022, 3, 28, 20, 10, 30) # 返回星期幾 # 注意:星期一到星期天分別對應 1 到 7 print(dt.isoweekday()) # 1 # 返回一年當中的第幾天 # 範圍是 1 到 366 print(dt.day_of_year) # 87 # 返回一個月當中的第幾天 print(dt.days_in_month) # 31 # 返回一個月當中的第幾周 print(dt.week_of_month) # 5 # 返回一年當中的第幾周 print(dt.week_of_year) # 13 # 是否是閏年 print(dt.is_leap_year()) # False
最後就是日期的運算,這是 pendulum 最為強大的地方,至於為什麼強大,我們演示一下就知道了。
import pendulum dt = pendulum.local( 2022, 3, 30, 20, 10, 30) # 返回下一個月的今天 print(dt.add(months=1)) """ 2022-04-30T20:10:30+08:00 """ # 返回上一個月的今天 # 但是上一個月是 2 月,並且是平年 # 所以最多 28 天 print(dt.add(months=-1)) """ 2022-02-28T20:10:30+08:00 """ # 我們看到處理的非常完美 # 該方法的原型如下,年月日時分秒都是支援的,當然還有星期也支援 """ def add( self, years=0, months=0, weeks=0, days=0, hours=0, minutes=0, seconds=0, microseconds=0, ): """
像 Python 的內建模組 datetime 在將日期相加的時候,最多支援到天,我們無法計算下一週、下一個月、下一年的日期。而 pendulum 則可以很方便地處理,這也是我最喜歡的一點。
當然啦,add 裡面的值為正,相當於日期往後退;值為負,相當於日期往前推。
然後是兩個日期還可以做減法:
import pendulum dt1 = pendulum.local( 2021, 1, 20, 11, 22, 33) dt2 = pendulum.local( 2022, 3, 30, 20, 10, 30) period = dt2 - dt1 # 返回的是 Period 物件 # 相當於 datetime 模組裡面的 timedelta print(period.__class__) """ <class 'pendulum.period.Period'> """ # 但是功能方面,Period 要強大很多 # 兩者差了多少年 print(period.in_years()) # 1 # 兩者差了多少個月 print(period.in_months()) # 14 # 兩者差了多少個星期 print(period.in_weeks()) # 62 # 兩者差了多少天 print(period.in_days()) # 434 # 兩者差了多少個小時 print(period.in_hours()) # 10424 # 兩者差了多少分鐘 print(period.in_minutes()) # 625487 # 兩者差了多少秒 print(period.in_seconds()) # 37529277
功能非常強大,Python 的 datetime 模組裡面的 timedelta 最多隻能計算兩個日期差了多少天,而這裡年月日時分秒均可。
到此這篇關於Python最好的日期處理庫pendulum的使用指南的文章就介紹到這了,更多相關Python日期處理庫pendulum內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45