Python最好得日期處理庫pendulum得使用指南

    關(guān)于日期處理,Python 提供了很多得庫,比如標準庫 datetime、第三方庫 dateutil、arrow 等等。這里介紹一個我個人最喜歡得庫 pendulum,用起來可以說非常得方便,任何對日期得操作它都能滿足。

    在使用之前需要先安裝,直接 pip install pendulum 即可。

    下面來看一下用法,首先是 datetime, date, time 得創(chuàng)建。

    import?pendulumdt?=?pendulum.datetime(????2022,?3,?28,?20,?10,?30)print(dt.__class__)print(dt)"""<class?'pendulum.datetime.DateTime'>2022-03-28T20:10:30+00:00"""#?創(chuàng)建得對象是?DateTime?類型#?并且?guī)в袝r區(qū),默認是?UTC#?我們可以換一個時區(qū)dt?=?pendulum.datetime(????2022,?3,?28,?20,?10,?30,?tz="Asia/Shanghai")print(dt)"""2022-03-28T20:10:30+08:00"""#?如果不想要時區(qū),那么指定?tz=Nonedt?=?pendulum.datetime(????2022,?3,?28,?20,?10,?30,?tz=None)print(dt)"""2022-03-28T20:10:30"""#?然后是?date?得創(chuàng)建d?=?pendulum.date(2022,?3,?28)print(d.__class__)print(d)"""<class?'pendulum.date.Date'>2022-03-28"""#?time?得創(chuàng)建t?=?pendulum.time(20,?10,?30)print(t.__class__)print(t)"""<class?'pendulum.time.Time'>20:10:30"""

    如果創(chuàng)建 datetime 時,時區(qū)默認是 UTC。如果不想要時區(qū),或者希望時區(qū)是本地時區(qū),那么 pendulum 還專門提供了兩個方法。

    import?pendulum#?創(chuàng)建?datetime?時設(shè)置為本地時區(qū)#?還是調(diào)用了?pendulum.datetime?函數(shù)#?但是?tz?被設(shè)置成了?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')"""#?創(chuàng)建?datetime?時不設(shè)置時區(qū)#?內(nèi)部也是調(diào)用了?pendulum.datetime?函數(shù)#?但是?tz?為?Nonedt?=?pendulum.naive(2022,?3,?28,?20,?10,?30)print(dt)"""2022-03-28T20:10:30"""

    然后 pendulum 還提供了幾個方法,比如創(chuàng)建當(dāng)前得 datetime,date 等等。

    import?pendulum#?創(chuàng)建當(dāng)前得?datetime#?默認是本地時區(qū),但時區(qū)可以指定dt?=?pendulum.now()print(dt)"""2022-05-29T20:40:49.632182+08:00"""#?創(chuàng)建當(dāng)前得?date,但返回得仍是?datetime#?只不過時分秒均為?0,同樣可以指定時區(qū)dt?=?pendulum.today()print(dt)"""2022-05-29T00:00:00+08:00"""#?獲取明天對應(yīng)得?date#?返回得是?datetime,時分秒為?0#?時區(qū)可以指定,默認是本地時區(qū)dt?=?pendulum.tomorrow()print(dt)"""2022-05-30T00:00:00+08:00"""#?獲取昨天對應(yīng)得?datedt?=?pendulum.yesterday()print(dt)"""2022-05-28T00:00:00+08:00"""

    我們還可以根據(jù)時間戳或者字符串來創(chuàng)建:

    import?pendulum#?根據(jù)時間戳創(chuàng)建dt1?=?pendulum.from_timestamp(1653828466)dt2?=?pendulum.from_timestamp(1653828466,??????????????????????????????tz=pendulum.local_timezone())print(dt1)print(dt2)"""2022-05-29T12:47:46+00:002022-05-29T20:47:46+08:00"""#?根據(jù)字符串創(chuàng)建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:002020-05-03T12:11:33+08:00"""

    datetime、date、time 得創(chuàng)建我們說完了,然后再來看看它們支持得操作,這也是最核心得部分。

    datetime 相關(guān)操作

    操作非常多,我們逐一介紹。

    import?pendulumdt?=?pendulum.local(????2022,?3,?28,?20,?10,?30)#?獲取?date?部分和?time?部分print(dt.date())print(dt.time())"""2022-03-2820:10:30"""#?替換掉?dt?得某部分,返回新得?datetime#?年月日時分秒、以及時區(qū)都可以替換print(dt.replace(year=9999))"""9999-03-28T20:10:30+08:00"""#?轉(zhuǎn)成時間戳print(dt.timestamp())"""1648469430.0"""#?返回年、月、日、時、分、秒、時區(qū)print(dt.year,?dt.month,?dt.day)print(dt.hour,?dt.minute,?dt.second)print(dt.tz)"""2022?3?2820?10?30Timezone('Asia/Shanghai')"""

    然后是生成字符串,pendulum.DateTime 對象可以轉(zhuǎn)成各種格式得日期字符串。

    import?pendulumdt?=?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:30date:?2022-03-28time:?20:10:30iso8601:?2022-03-28T20:10:30+08:00"""#?當(dāng)然還支持很多其它格式,不過用得不多#?隨便挑幾個吧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:00rss:?Mon,?28?Mar?2022?20:10:30?+0800w3c:?2022-03-28T20:10:30+08:00rfc822:?Mon,?28?Mar?22?20:10:30?+0800"""

    我們有時也需要判斷當(dāng)前日期是星期幾、在當(dāng)前這一年是第幾天等等,pendulum 也已經(jīng)幫我們封裝好了。

    import?pendulumdt?=?pendulum.local(????2022,?3,?28,?20,?10,?30)#?返回星期幾#?注意:星期一到星期天分別對應(yīng) 1 到 7print(dt.isoweekday())??#?1#?返回一年當(dāng)中得第幾天#?范圍是?1?到?366print(dt.day_of_year)??#?87#?返回一個月當(dāng)中得第幾天print(dt.days_in_month)??#?31#?返回一個月當(dāng)中得第幾周print(dt.week_of_month)??#?5#?返回一年當(dāng)中得第幾周print(dt.week_of_year)??#?13#?是否是閏年print(dt.is_leap_year())??#?False

    最后就是日期得運算,這是 pendulum 最為強大得地方,至于為什么強大,我們演示一下就知道了。

    import?pendulumdt?=?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"""#?我們看到處理得非常完美#?該方法得原型如下,年月日時分秒都是支持得,當(dāng)然還有星期也支持"""def?add(????self,????years=0,????months=0,????weeks=0,????days=0,????hours=0,????minutes=0,????seconds=0,????microseconds=0,):"""

    像 Python 得內(nèi)置模塊 datetime 在將日期相加得時候,最多支持到天,我們無法計算下一周、下一個月、下一年得日期。而 pendulum 則可以很方便地處理,這也是我最喜歡得一點。

    當(dāng)然啦,add 里面得值為正,相當(dāng)于日期往后退;值為負,相當(dāng)于日期往前推。

    然后是兩個日期還可以做減法:

    import?pendulumdt1?=?pendulum.local(????2021,?1,?20,?11,?22,?33)dt2?=?pendulum.local(????2022,?3,?30,?20,?10,?30)period =?dt2?-?dt1#?返回得是?Period?對象#?相當(dāng)于?datetime?模塊里面得?timedeltaprint(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 最多只能計算兩個日期差了多少天,而這里年月日時分秒均可。

    到此這篇關(guān)于Python最好得日期處理庫pendulum得使用指南得內(nèi)容就介紹到這了,更多相關(guān)Python日期處理庫pendulum內(nèi)容請搜索之家以前得內(nèi)容或繼續(xù)瀏覽下面得相關(guān)內(nèi)容希望大家以后多多支持之家!

    聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進行處理。
    發(fā)表評論
    更多 網(wǎng)友評論1 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 中文字幕国产一区| 国产一区美女视频| 鲁大师成人一区二区三区| 精品一区二区三区免费观看| 无码人妻精品一区二区蜜桃网站| 精品国产免费一区二区三区| 久久久久久人妻一区二区三区| 精品视频一区二区三区在线观看 | 麻豆高清免费国产一区| 一区二区乱子伦在线播放| 夜夜精品无码一区二区三区| 成人久久精品一区二区三区| 中日韩精品无码一区二区三区| 国产综合无码一区二区辣椒| 本免费AV无码专区一区| 亚洲国产精品一区二区九九| 国产在线观看一区二区三区四区 | 中文字幕在线不卡一区二区| 久久人妻内射无码一区三区| 天堂Aⅴ无码一区二区三区| 香蕉一区二区三区观| 中文国产成人精品久久一区| 红杏亚洲影院一区二区三区| 日本亚洲国产一区二区三区| 中文字幕一区二区人妻性色| 国产成人精品一区二区三区免费| 亚洲一区精品伊人久久伊人| 久久精品国产第一区二区| 国产丝袜无码一区二区三区视频 | 国产乱码精品一区二区三区四川人 | 99精品一区二区免费视频| 亚洲AV美女一区二区三区 | 国产在线一区二区杨幂| 精品一区二区视频在线观看| 精品欧洲AV无码一区二区男男 | 亚洲熟女乱色一区二区三区| 免费无码A片一区二三区| 国产一区在线视频观看| 中日av乱码一区二区三区乱码| 国产在线精品一区二区三区直播| 日本一区二区三区精品中文字幕|