摘要:代碼實例的時間的時間輸出和相差的時長輸出結果也就是說,多倫多和溫哥華有個小時的時差小屌絲我去這么牛嘛小魚這是開胃菜。代碼實例為了顯示直觀,我直接用來運行這沒有什么難度,在前面的代碼中,也有展示。
小屌絲:有沒有什么好的方式,讓我的時間轉換不那么費勁!
小魚:開門見山的說,Python自帶的datetime 模塊和 time模塊,不夠你用?
小屌絲:轉換的太費勁了。
小魚:知道費勁,說明你的擼碼有進步,不過,你這么一說,我確實想起來一個時間神器,一行代碼就搞定。
小屌絲:這是真的嗎?
小魚:你可以不信,但是不能阻擋我的表演! !
話不多說,小魚要開始表演了!!
今天來說的這個神器,就是pendulum,
對的,沒看錯,就是一個萬能時間輸出轉換神器!
Pendulum 是一個 Python 包,用于簡化日期時間操作;
它提供的類是原生類的替代品(它們繼承自它們)。
我們先簡單看個例子,如:我們要獲取 多倫多和溫哥華的時間差。
代碼實例
#-*- coding: utf-8 -*-# @Time : 2021-10-08# @Author : Carl_DJimport pendulum#Toronto的時間dt_Toronto = pendulum.datetime(2021,10,8,tz = "America/Toronto")#Vancouver的時間dt_Vancouver = pendulum.datetime(2021,10,8,tz = "America/Vancouver")#輸出Toronto 和Vancouver相差的時長print(dt_Toronto.diff(dt_Vancouver).in_hours())
輸出結果 :
3
也就是說, 多倫多和溫哥華 有3個小時的時差!
小屌絲:我去~~ pendulum 這么牛嘛???
小魚:這是開胃菜。接著往下看!!
按照規矩,我們先安裝!
當然,最直接的方式,就是pip install
pip install pendulum
安裝完成就是這樣的,截圖如下:
當然,
如果不想每次都pip安裝,直接看這兩篇:
《Python3,選擇Python自動安裝第三方庫,從此跟pip說拜拜!!》
《Python3,我低調的只用一行代碼,就導入Python所有庫!》
代碼實例:
#-*- coding: utf-8 -*-# @Time : 2021-10-09# @Author : Carl_DJimport pendulum#不指定任何時區dt_dt = pendulum.datetime(2021,10,9)#輸出默認時區print(dt_dt.timezone.name)
運行結果:
UTC
如果不指定任何時區,那么輸出的就是默認時區 即:UTC
使用local()自動將時區設置為本地時區。
類似于datetime()
但是,不同點:
local()會自動將時區轉換本地時區;
類似于datetime() 并不會自動將時區轉換為本地時區;
代碼實例:
#-*- coding: utf-8 -*-# @Time : 2021-10-09# @Author : Carl_DJimport pendulum#使用local()講時區設置為本地時區dt_loc = pendulum.local(2021,10,8)print(dt.timezone.name)
運行結果:
Asia/Shanghai
指定時區,輸出的時區結果是:Asia/Shanghai
敲黑板,知識點:
切換時區很方便,只要調用時間對象的 in_timezone 傳入參數 時區名稱 就可以了:
縮寫形式 in_tz 也可以被識別
代碼實例:
#-*- coding: utf-8 -*-# @Time : 2021-10-09# @Author : Carl_DJimport pendulum#默認是上海時區dt_p = pendulum.now()#輸出默認時區時間print(dt_p)#把時區設置為溫哥華,并輸出print(dt_p.in_timezone("America/Vancouver"))
輸出結果:
#默認時區上海的時間2021-10-09T10:08:17.167020+08:00#溫哥華的時間2021-10-08T19:08:17.167020-07:00
不同的時區,可以進行比較,運算等,我們來看下:
代碼實例
#-*- coding: utf-8 -*-# @Time : 2021-10-09# @Author : Carl_DJimport pendulumdt_Toronto = pendulum.datetime(2021, 10, 8, 22, 33, 22, 0, tz="America/Toronto")dt_Vancouver = pendulum.datetime(2021, 10, 8, 19, 33, 22, 0, tz="America/Vancouver")print(f"打印多倫多時間:{dt_Toronto.to_datetime_string()}")print(f"打印多倫多時區:{dt_Toronto.timezone_name}")print(f"打印溫哥華時間:{dt_Vancouver.to_datetime_string()}")print(f"打印溫哥華時區:{dt_Vancouver.to_datetime_string()}")#比較兩個時區的差值是否相等if dt_Toronto == dt_Vancouver: print(True)else: print(False)#給兩個時區賦值dt_Vancouver = dt_Vancouver.on(2021,10,1).at(0,0,0)dt_Toronto = dt_Toronto.on(2021,10,1).at(0,0,0)#使用diff()比較兩個時差的差值dif_time = dt_Vancouver.diff(dt_Toronto).in_hours()print(f"兩個時區的時間差:{dif_time}")
輸出結果:
打印多倫多時間:2021-10-08 22:33:22打印多倫多時區:America/Toronto打印溫哥華時間:2021-10-08 19:33:22打印溫哥華時區:America/VancouverTrue兩個時區的時間差:3
敲黑板,知識點:
diff 方法用于與另一個時間對象比較,
in_hours 方法是時間區間的方法,可以將區間轉化為小時,同理還有 in_days、in_years 等
時間運算包括比較、計算差異 和 增減。
比較很簡單,對兩個時間對象做比較就可以了,支持 ==、!=、>、>=、<、<=,比較的結果是 True 或 False。
代碼實例:
為了顯示直觀,我直接用IDLE 來運行
#-*- coding: utf-8 -*-# @Time : 2021-10-09# @Author : Carl_DJimport pendulumdt_Toronto = pendulum.datetime(2021, 10, 8, 22, 33, 22, 0, tz="America/Toronto")dt_Vancouver = pendulum.datetime(2021, 10, 8, 19, 33, 22, 0, tz="America/Vancouver")>>> dt_Toronto = dt_Toronto.on(2021, 10, 1).at(0, 0, 0)>>> dt_Vancouver = dt_Vancouver.on(2021, 10, 1).at(0, 0, 0)>>> first == secondFalse>>> first != secondTrue>>> first > secondFalse>>> first >= secondFalse>>> first < secondTrue>>> first <= secondTrue
這沒有什么難度, 在前面的代碼中,也有展示。
import pendulumdt_Vancouver = pendulum.datetime(2021, 9, 30, 0)dt_Toronto = pendulum.datetime(2021, 10, 1, 0)print(f"溫哥華和多倫多時間比較:{dt_Vancouver.diff(dt_Toronto)}")print(f"溫哥華與默認時區時間比較:{dt_Vancouver.diff()}")
輸出結果:
溫哥華和多倫多時間比較:[2021-09-30T00:00:00+00:00 -> 2021-10-01T00:00:00+00:00]>溫哥華與默認時區時間比較:[2021-09-30T00:00:00+00:00 -> 2021-10-09T03:48:39.418295+00:00]>
在2.3.4章節提到了,diff()比較差異的方法。
這里就不再贅述。
這里說一下,如果diff()不傳參數,默認是與當前時區時間進行比較。
加減時間,這里使用的是add()和subtract()方法。
并且每個方法都返回一個新Datetime實例。
代碼實例:
#-*- coding: utf-8 -*-# @Time : 2021-10-09# @Author : Carl_DJimport pendulum#設置當前時間戳dt_now = pendulum.datetime(2021, 10, 1)#打印dt_now的時間戳print(f"打印出當前的時間戳:{dt_now.to_datetime_string()}")#增加5年dt_now = dt_now.add(years=5)print(f"增加5年,顯示時間戳:{dt_now.to_datetime_string()}")#減少3年,dt_now = dt_now.subtract(years=3)print(f"減少3年,顯示時間戳:{dt_now.to_datetime_string()}")#增加4個月dt_now = dt_now.add(months=4)print(f"增加4個月,顯示時間戳:{dt_now.to_datetime_string()}")#減少2個月dt_now = dt_now.subtract(months=2)print(f"減少2個月,顯示時間戳:{dt_now.to_datetime_string()}")#增加1周dt_now = dt_now.add(weeks=1)print(f"增加1周,顯示時間戳:{dt_now.to_datetime_string()}")#減少3周dt_now = dt_now.subtract(weeks=3)print(f"減少3周,顯示時間戳:{dt_now.to_datetime_string()}")#增加9小時dt_now = dt_now.add(hours=9)print(f"增加9小時,顯示時間戳:{dt_now.to_datetime_string()}")#減少6小時dt_now = dt_now.subtract(hours=3)print(f"減少6小時,顯示時間戳:{dt_now.to_datetime_string()}")
輸出結果:
打印出當前的時間戳:2021-10-01 00:00:00增加5年,顯示時間戳:2026-10-01 00:00:00減少3年,顯示時間戳:2023-10-01 00:00:00增加4個月,顯示時間戳:2024-02-01 00:00:00減少2個月,顯示時間戳:2023-12-01 00:00:00增加1周,顯示時間戳:2023-12-08 00:00:00減少3周,顯示時間戳:2023-11-17 00:00:00增加9小時,顯示時間戳:2023-11-17 09:00:00減少6小時,顯示時間戳:2023-11-17 06:00:00
敲黑板,知識點:
可以對時間進行調整,這個貌似很厲害的樣子,
我們一起來看看。
#-*- coding: utf-8 -*-# @Time : 2021-10-09# @Author : Carl_DJimport pendulumdt_now = pendulum.datetime(2021, 10, 11,12,0,0)#輸出當天開始時間print(f"當天的開始時間:{dt_now.start_of("day")}")#輸出當天結束時間print(f"當天的結束時間:{dt_now.end_of("day")}")#輸出當月開始時間print(f"當月的開始時間:{dt_now.start_of("month")}")#輸出當天結束時間print(f"當月的結束時間:{dt_now.end_of("month")}")#輸出21世紀開始時間print(f"21世紀的開始時間:{dt_now.start_of("century")}")#輸出21世紀結束時間print(f"21世紀的結束時間:{dt_now.end_of("century")}")# dt_now.day_of_week == pendulum.SUNDAY#輸出距離當前最近的下一個周三的日期print(f"下一個周三:{dt_now.next(pendulum.WEDNESDAY)}")#輸出當前時間的本周周三的日期print(f"本周的周三:{dt_now.previous(pendulum.WEDNESDAY)}")dt_start = pendulum.datetime(2021, 10, 1)dt_end = pendulum.datetime(2021, 10, 31)#輸出本月的中間日期print(f"本月的中間日期:{dt_start.average(dt_end)}")
敲黑板,知識點:
時間對象是一個復雜的對象,對于我們來說不方便看和讀,就需要將起轉化為字符串,或者將字符串表示的時間轉化為時間對象。
Pendulum 提供和很多方便的方式:
代碼實例:
#-*- coding: utf-8 -*-# @Time : 2021-10-09# @Author : Carl_DJimport pendulumdt = pendulum.datetime(1985, 9, 20, 13, 14, 15)print(f"輸出當前時間:{dt}")#輸出年月日print(f"輸出年月日:{dt.to_date_string()}")#英文形式輸出時間日期print(f"英文形式輸出:{dt.to_formatted_date_string()}")#輸出時間print(f"輸出當前時間戳:{dt.to_time_string()}")#轉化日期和時間print(f"輸出轉化后的日期和時間:{dt.to_datetime_string()}")print(f"輸出當前格式時間:{dt.to_day_datetime_string()}")#格式化時間print(f"格式化時間后輸出:{dt.format("ffffdd Do [of] MMMM YYYY HH:mm:ss A")}")
輸出結果:
輸出當前時間:1985-09-20T13:14:15+00:00輸出年月日:1985-09-20英文形式輸出:Sep 20, 1985輸出當前時間戳:13:14:15輸出轉化后的日期和時間:1985-09-20 13:14:15輸出當前格式時間:Fri, Sep 20, 1985 1:14 PM格式化時間后輸出:Friday 20th of September 1985 13:14:15 PM
敲黑板,知識點:
字符串轉換成時間, 使用 parse 方法就可以。
代碼實例:
#-*- coding: utf-8 -*-# @Time : 2021-10-09# @Author : Carl_DJimport pendulumdt = pendulum.parse("1985-09-20T23:11:22")print(f"輸出當前時間:{dt}")dt = pendulum.parse("1985-09-20T23:11:22", tz="America/Toronto")print(f"輸出追加tz后的時間:{dt}")#添加strict=False,讓pendulum盡可能的匹配我的想要的結果dt = pendulum.parse("31-01-01", strict=False)print(f"輸出結果為:{dt}")dt = pendulum.parse("31/01/01", strict=False)print(f"輸出結果為:{dt}")
輸出結果:
輸出當前時間:1985-09-20T23:11:22+00:00輸出追加tz后的時間:1985-09-20T23:11:22-04:00看下效果2031-01-01T00:00:00+00:00看下效果2031-01-01T00:00:00+00:00
敲黑板,知識點:
小屌絲:為啥這個章節叫“人文關懷”,難道要給我們發福利 ??
小魚:想啥呢~ ~
這個章節,主要介紹pendulum最最最,最Nice的功能:人性化時間
小屌絲:咋人性化了,我沒看出來呢?
小魚:別著急,往下看!
先代碼展示:
#-*- coding: utf-8 -*-# @Time : 2021-10-09# @Author : Carl_DJimport pendulum#1天前dt_ago = pendulum.now().subtract(days=1).diff_for_humans()print(f"輸出1天前:{dt_ago}")#1年后dt_after = pendulum.now().diff_for_humans(pendulum.now().subtract(years=1))print(f"輸出1年后:{dt_after}")#1個月前dt = pendulum.datetime(2011, 8, 1)print(f"輸出1個月前:{dt.diff_for_humans(dt.add(months=1))}")#5秒后dt_sec = pendulum.now().add(seconds=5).diff_for_humans()print(f"輸出5 秒后:{dt_sec}")#3周前dt_wek = pendulum.now().subtract(days=24).diff_for_humans()print(f"輸出3周前:{dt_wek}")#設定輸出結果顯示中文pendulum.set_locale("zh")#輸出3周前,中文顯示dt_wk = pendulum.now().subtract(days=24).
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/122204.html
摘要:中提供了一個和的模塊可以用來做格式化日期和時間的。格式化日期通過模塊中方法來格式化日期函數接收時間元組并返回以可讀字符串表示薪資的時間格式的話由參數決定。每日寬度間隔為字符每行的長度為是每星期的行數。 我們可以通過學習在Python中對日期時間的處理,可以在快速的完成工作,比如: 將日期時間作為日志信息的內容輸入 計算某一個功能的執行時間 用日期命名一個文件的名稱 記錄或者展示文件的...
摘要:模塊實現從程序外部向程序傳遞參數。位置參數代表文件本身,運行方法參數,參數。。是正常退出,其他為異常第次第五次退出模塊判斷現在正在實用的平臺,返回返回得到當前工作的目錄。指定所有目錄下所有的文件和目錄名。例檢驗指定的對象是否存在。 sys模塊 sys.argv: 實現從程序外部向程序傳遞參數。 位置參數argv[0]代表py文件本身,運行方法 python xx.py 參數1,參數2 ...
摘要:是回調函數,當鏈接服務器和相應數據傳輸完畢時觸發本函數可選。僅僅是針對的,在中,已經沒有這個模塊了,取代它的是。由于以流式讀取文件,從而速度較快,切少占用內存,但是操作上稍復雜,需要用戶實現回調函數。 編寫模塊 模塊是程序 模塊就是一個擴展名為.py的Python程序。 編寫模塊 #!/usr/bin/env python # coding=utf-8 lang = python 引...
摘要:是否則檢驗指定的對象是否存在。由于的模塊實現主要調用庫,所以各個平臺可能有所不同。時間格式時間戳的方式通常來說,時間戳是指格林威治時間年月日時分秒北京時間年月日時分秒起至現在的總秒數。元組方式元組共有個元素,返回的函數主要有,,。 os模塊 os模塊提供了多數操作系統的功能接口函數。當os模塊被導入后,它會自適應于不同的操作系統平臺,根據不同的平臺進行相應的操作,在python編程時,...
摘要:用了一段時間的開發項目,也是第一次用來開發項目,所有有許多相關的知識點需要總結,本文所介紹的的日期時間處理就是最近用到的,希望對各位有所幫助,也同時作為自己的筆記儲存。提供了等模塊用于處理日期和時間,較為常用的還是模塊。 用了一段時間的django開發web項目,也是第一次用python來開發項目,所有有許多相關的知識點需要總結,本文所介紹的python的日期時間處理就是最近用到的,希...
閱讀 2311·2021-10-11 10:59
閱讀 2602·2021-10-11 10:58
閱讀 3304·2021-09-08 09:35
閱讀 3782·2021-09-02 15:21
閱讀 1454·2019-08-30 15:53
閱讀 2608·2019-08-29 14:16
閱讀 2068·2019-08-26 14:00
閱讀 2942·2019-08-26 13:52