詳解python如何正確使用時間戳,日期,時間,時區(qū)
時間概念
utc與時區(qū)
UTC是Coordinated Universal Time的縮寫,是全球時間的標準,UTC時間不受時區(qū)和夏令時的影響,是時間的標準。全球各地的時間以UTC時間為參考進行調(diào)整。
時區(qū)是Time Zone,是地球上按照經(jīng)度劃分的區(qū)域,每個區(qū)域有自己的標準時間,時區(qū)與UTC時間的差距通常以小時為單位(但有些時區(qū)偏移的時間有30分鐘)。整個地球被劃分為24個主要時區(qū),每個時區(qū)大約覆蓋15度經(jīng)度(360度/24小時)
北京時間是東八區(qū),東八區(qū)也就是比UTC時間偏移了8小時,也就是UTC+8,在世界上,同樣在東八區(qū)的,還有澳大利亞的地區(qū)。
紐約時間是西五區(qū),也就是UTC-5,因此,距離北京時間的東八區(qū)標準時間差是13小時。但是需要注意的是,當(dāng)紐約地區(qū)開始夏令時的時候,會變成UTC-4,此時就是常見的12小時時差了。
東京時間是東九區(qū),也就是UTC+9,因此,距離北京時間的東八區(qū)差是1小時,且是早1小時。
夏令時
夏令時是一種人為調(diào)整時鐘的制度,通常在春季將時鐘向前調(diào)一個小時,其目的是延長晚間的日照時間,旨在更有效地利用日光資源,減少能源消耗。
其中,北半球的高緯度國家通常使用夏令時,因為其緯度高,日照變化大。與之相反,接近赤道的地區(qū),日照變化不大,因此通常不用夏令時。例如大部分亞洲國家,如中國,日本,韓國,都不使用夏令時。
沒有使用過夏令時地區(qū)的人,通常對于夏令時的作用不太了解,具體來說:夏令時期間,時鐘被撥快一小時。這意味著人們按照新的時間表作息,早上實際比平時早起一小時,但由于夏季天亮較早,對生活影響不大。下午下班時,按照新的時間,天色仍然明亮,人們可以在下班后享受更多的日照時間。
時間戳
時間戳是Timestamp是一種表示特定時間點的數(shù)字格式,基于UTC時間的1970年1月1日00:00:00以來經(jīng)過的秒數(shù)或毫秒數(shù)來表示,時間戳可以精確地標識一個具體的時間點,該時間點不受時區(qū)影響。
時間戳在編程中有很大作用,例如,記錄某個系統(tǒng)事件,用戶注冊的時間,或者通過計算時間戳的差,來計算時間間隔。
time
通用格式化
time主要處理時間的獲取和簡單的格式化,如果需要更復(fù)雜的日期和時間操作,應(yīng)該嘗試使用datetime
常用的格式化字符串方式如下所示,并且datetime中同樣也這樣使用
- %Y:四位年份
- %m:兩位月份(01-12)
- %d:兩位日期(01-31)
- %H:兩位小時(00-23)
- %M:兩位分鐘(00-59)
- %S:兩位秒(00-59)
時間戳
獲取當(dāng)前時間戳
import time timestamp = time.time() print("當(dāng)前時間戳:", timestamp)
時間戳可以用于記錄時間間隔,不過,如果要更精準的計時可以用
import time start = time.perf_counter() time.sleep(2) end = time.perf_counter() print(f"操作耗時: {end - start} 秒")
時間戳轉(zhuǎn)為時間對象
時間戳轉(zhuǎn)換為struct_time本地時間
timestamp = time.time() local_time = time.localtime(timestamp) print("本地時間:", local_time)
將時間戳轉(zhuǎn)換為utc時間
timestamp = time.time() utc_time = time.gmtime(timestamp) print("UTC時間:", utc_time)
時間對象轉(zhuǎn)為時間戳
import time struct = time.strptime("2024-11-02 22:00:00", "%Y-%m-%d %H:%M:%S") timestamp = time.mktime(struct) print("時間戳:", timestamp) # 時間戳: 1730556000.0
時間格式化
將一個時間戳快速轉(zhuǎn)為可讀時間
timestamp = time.time() readable_time = time.ctime(timestamp) print(readable_time) # 格式如Sat Nov 2 10:32:27 2024
根據(jù)時間字符串,創(chuàng)建時間對象
time_str = "2024-11-02 22:00:00" parsed_time = time.strptime(time_str, "%Y-%m-%d %H:%M:%S") print(parsed_time)
根據(jù)時間對象,轉(zhuǎn)為字符串
time_str = "2024-11-02 22:00:00" parsed_time = time.strptime(time_str, "%Y-%m-%d %H:%M:%S") formatted_time = time.strftime("%Y年%m月%d日%H點%M分", parsed_time) print("格式化時間:", formatted_time) # 格式化時間:2024年11月02日22點00分
時間暫停
時間是不會暫停的,實際上該功能是程序暫停
import time print("暫停前") time.sleep(3) # 暫停3秒 print("暫停后")
datetime
date日期
獲取當(dāng)前日期
today = datetime.date.today() print("今天的日期:", today) # 格式如2024-11-02
datetime日期時間
獲取當(dāng)前時間
now_time = datetime.datetime.now().time() print("當(dāng)前時間:", now_time) # 格式如10:46:50.506231
獲取當(dāng)前日期與時間
now = datetime.datetime.now() print("當(dāng)前日期和時間:", now) # 格式如2024-11-02 10:47:44.299445
獲取UTC時間
utc_now = datetime.datetime.utcnow() print("UTC時間:", utc_now)
創(chuàng)建日期時間對象
創(chuàng)建日期對象
specific_date = datetime.date(2024, 11, 2) print("特定日期:", specific_date)
創(chuàng)建時間對象
specific_time = datetime.time(22, 0, 0) print("特定時間:", specific_time)
創(chuàng)建日期時間對象
specific_datetime = datetime.datetime(2024, 11, 2, 22, 0, 0) print("特定日期和時間:", specific_datetime)
時間字符串格式化與解析
時間字符串格式化
now = datetime.datetime.now() formatted = now.strftime("%Y-%m-%d %H:%M:%S") print("格式化日期時間:", formatted)
時間字符串解析
time_str = "2024-11-2 22:00:00" parsed_datetime = datetime.datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S") print("解析后的日期時間對象:", parsed_datetime)
時間間隔
使用timedelta計算時間間隔的日期
from datetime import date, timedelta today = date.today() future_date = today + timedelta(days=10) print("10天后的日期:", future_date) past_date = today - timedelta(weeks=1) print("一周前的日期:", past_date)
計算時間間隔的日期時間
from datetime import datetime, timedelta now = datetime.now() future_time = now + timedelta(minutes=10) print("10分鐘后的日期時間:", future_time) past_time = now - timedelta(hours=2) print("2小時前的日期時間:", past_time)
zoneinfo
時間轉(zhuǎn)換
在python 3.9以后,引入了zoneinfo用于處理時區(qū),并且能夠直接用于datetime
from datetime import datetime from zoneinfo import ZoneInfo now_utc = datetime.now(ZoneInfo("UTC")) print("UTC時間:", now_utc) # 轉(zhuǎn)換為北京時間 now_beijing = now_utc.astimezone(ZoneInfo("Asia/Shanghai")) print("北京時間:", now_beijing) # 轉(zhuǎn)換為紐約時間 now_newyork = now_utc.astimezone(ZoneInfo("America/New_York")) print("紐約時間:", now_newyork)
實際上,時間轉(zhuǎn)換也可以自行進行計算,例如,我們已經(jīng)了解了北京時間是UTC+8,紐約時間是UTC-5
from datetime import datetime, timedelta now_utc = datetime.utcnow() print("UTC時間:", now_utc) now_beijing = now_utc + timedelta(hours=8) print("北京時間:", now_beijing) now_newyork = now_utc - timedelta(hours=5) print("紐約時間:", now_newyork)
列出所有時區(qū)
所有時區(qū)
import zoneinfo print(zoneinfo.available_timezones())
遍歷找到其中的Asia時區(qū)
import zoneinfo for zone in zoneinfo.available_timezones(): if "Asia" in zone: print(zone)
獲取時區(qū)時間
如果在使用當(dāng)前時間的時候,總是自行設(shè)置本地時區(qū)的時間,而不依賴于機器設(shè)置,可以獲得更好的跨平臺性
from datetime import datetime from zoneinfo import ZoneInfo tz_shanghai = ZoneInfo("Asia/Shanghai") tz_newyork = ZoneInfo("America/New_York") now_shanghai = datetime.now(tz_shanghai) now_newyork = datetime.now(tz_newyork) print("北京時間:", now_shanghai) print("紐約時間:", now_newyork)
以上就是詳解python如何正確使用時間戳,日期,時間,時區(qū)的詳細內(nèi)容,更多關(guān)于python時間的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
對Python random模塊打亂數(shù)組順序的實例講解
今天小編就為大家分享一篇對Python random模塊打亂數(shù)組順序的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11解讀MaxPooling1D和GlobalMaxPooling1D的區(qū)別
這篇文章主要介紹了MaxPooling1D和GlobalMaxPooling1D的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12Python實現(xiàn)遍歷大量表格文件并篩選出數(shù)據(jù)缺失率低的文件
這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)遍歷大量表格文件并篩選出表格內(nèi)數(shù)據(jù)缺失率低的文件的功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-05-05matplotlib實現(xiàn)數(shù)據(jù)實時刷新的示例代碼
這篇文章主要介紹了matplotlib實現(xiàn)數(shù)據(jù)實時刷新的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Python中DataFrame與內(nèi)置數(shù)據(jù)結(jié)構(gòu)相互轉(zhuǎn)換的實現(xiàn)
pandas?支持我們從?Excel、CSV、數(shù)據(jù)庫等不同數(shù)據(jù)源當(dāng)中讀取數(shù)據(jù),來構(gòu)建?DataFrame。但有時數(shù)據(jù)并不來自這些外部數(shù)據(jù)源,這就涉及到了?DataFrame?和?Python?內(nèi)置數(shù)據(jù)結(jié)構(gòu)之間的相互轉(zhuǎn)換,本文就來和大家詳細聊聊2023-02-02Python利用matplotlib繪制約數(shù)個數(shù)統(tǒng)計圖示例
這篇文章主要介紹了Python利用matplotlib繪制約數(shù)個數(shù)統(tǒng)計圖,結(jié)合實例形式詳細分析了Python使用matplotlib進行統(tǒng)計圖繪制的相關(guān)操作技巧,需要的朋友可以參考下2019-11-11