詳解python日期時間處理2
前篇我們稍微學習瞭Python中時間的獲取,這次繼續學習日期的時區轉換,格式化等等。
開發中常用的日期操作還有哪些?
- 時區轉換顯示
- 日期格式化
- 秒數 與 日期 與 字符串的轉換
我們經常會用到,比如全球化的業務根據不同客戶顯示不同時間(格式等)
在python 主要有下面兩個模塊涵蓋瞭常用日期處理
import time import calender
我們看看這兩個模塊。
時間處理中的類型轉換:struct_time vs str
Python中創建一個時間,具體來說創建一個struct_time 需要一個9個元素的元組來構造。
asctime 函數幫我們把這種類型的時間格式化為字符串。
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/11/10 22:49 上午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學委 # @XueWeiTag: CodingDemo # @File : createtime.py # @Project : hello import time # fixed time: time.struct_time(tm_year=2021, tm_mon=11, tm_mday=10, tm_hour=22, tm_min=55, tm_sec=11, tm_wday=16, tm_yday=16, tm_isdst=16) the9fields = (2021, 11, 10, 22, 55, 11, 16, 16, 16) fixed = time.struct_time(the9fields) print("fixed time:", fixed) print("type:", type(fixed)) result = time.asctime(the9fields) # 類似struct_time,需要9個元素構成的元組參數。 print("asc time:", result) print("type:", type(result)) localtime = time.localtime() print("local time:", localtime) print("type:", type(localtime)) print("asc time:", time.asctime(localtime))
運行效果如下:
這個ticks就是從0時刻計算,至今的秒數累計。
可以隔一秒運行這個程序,每次ticks值加上1(近似)
指定輸入來構造時間:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/11/10 22:49 上午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學委 # @XueWeiTag: CodingDemo # @File : createtime.py # @Project : hello import time #fixed time: time.struct_time(tm_year=2021, tm_mon=11, tm_mday=10, tm_hour=22, tm_min=55, tm_sec=11, tm_wday=16, tm_yday=16, tm_isdst=16) fixed = time.struct_time((2021, 11, 10, 22, 55, 11, 16, 16, 16)) print("fixed time:", fixed)
運行效果如下:
時間與字符串轉換
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/11/10 22:49 上午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學委 # @XueWeiTag: CodingDemo # @File : createtime2.py # @Project : hello import time sec = 3600 # 紀元開始後的一個小時(GMT 19700101凌晨) # gmtime = time.gmtime(sec) print("gmtime:", gmtime) # GMT print("type:", type(gmtime)) print(time.strftime("%b %d %Y %H:%M:%S", gmtime)) print(time.strftime("%Y-%m-%d %H:%M:%S %Z", gmtime)) # 打印日期加上時區 print("*" * 16) localtime = time.localtime(sec) print("localtime:", localtime) # 本地時間 print("type:", type(localtime)) print(time.strftime("%b %d %Y %H:%M:%S", localtime)) print(time.strftime("%Y-%m-%d %H:%M:%S %Z", localtime)) # 打印日期加上時區 #試試其他格式 print(time.strftime("%D", localtime)) print(time.strftime("%T", localtime))
下面是運行結果:
對於時間格式化函數(strftime) 它並不理會你傳入的時間(struct_time)是哪個時區的,照樣給你輸出,也是正確的。
但是我們寫程序拿數據的時候,必須把時區信息原樣返回到用戶端,或者是UI端,最後由客戶端本地時區設置進行調整顯示。
最後看看,日期文本轉換為日期(struct_time).
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/11/10 7:49 上午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學委 # @XueWeiTag: CodingDemo # @File : createtime4.py # @Project : hello import time print("strptime1:", time.strptime("Jan 01 1970 09:00:00", "%b %d %Y %H:%M:%S")) print("strptime2:", time.strptime("1970-01-01 09:00:00", "%Y-%m-%d %H:%M:%S")) print("strptime3:", time.strptime("1970-01-01 09:00:00 CST", "%Y-%m-%d %H:%M:%S %Z"))
下面是運行結果:
總結
Python 日期處理挺多把戲的,換個格式打印/轉換,結果就不一樣瞭。
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!