Python笔记:日期时间获取与转换
世界時(Universal Time, UT)是根據地球自轉周期確定的時間,1s為全年內每日平均長度的1/86400,由于地球繞太陽公轉的軌道不是圓的,地球與太陽之間的距離不是固定的,導致太陽相對繞地球的周期不等于地球自轉周期,通過對產生的時差進行修正,稱為“平均太陽時”。根據國際協定,將英國格林威治所在子午圈(又稱本初子午線)的平太陽時,定義為零類世界時(UT0)。由于地球的旋轉軸會有微小移動(每年有幾厘米的移動),對極移效應進行修正后的時間稱為為一類世界時UT1。一類世界時UT1也有原因不明的季節性周期變化,對此進行修正,便得到更加均勻的二類世界時UT2。
原子時
原子時鐘是利用銫原子振蕩周期極為規律的特性研制而出,原子時(international atomic time,TAI)的秒長定義為銫 -133 原子能級躍遷輻射9192631770周所持續的時間。原子鐘的精度可以達到每100萬年誤差才1秒。在要求更高時間精度的天文、航海、航天等領域發揮了巨大的作用。
世界協調時
世界協調時(Coordinatde Universal Time, UTC)基于國際原子時,以原子時秒長為基礎,在時刻上盡量接近于格林威治標準時間(GMT),通過不規則的加入閏秒來抵消地球自轉變慢的影響,保證UTC與世界時(UT1)相差不超過0.9秒。
epoch time
Unix epoch (Unix time, POSIX time, Unix timestamp),是一種時間表示方式,定義為從格林威治時間1970年01月01日00時00分00秒起至現在的總秒數。Unix時間戳不僅被使用在Unix 系統、類Unix系統中,也在許多其他操作系統中被廣泛采用。
2038問題
32位操作系統將epoch日期存儲為有符號的32位整數,此類系統的Unix時間戳最多可以使用到格林威治時間2038年01月19日03時14分07秒(二進制:01111111 11111111 11111111 11111111)。其后一秒,二進制數字會變為10000000 00000000 00000000 00000000,發生溢出錯誤,造成系統將時間誤解為1901年12月13日20時45分52秒。這很可能會引起軟件故障,甚至是系統癱瘓(稱為2038年問題或者Y2038)。
使用64位二進制數字表示時間的系統(最多可以使用到格林威治時間292,277,026,596年12月04日15時30分08秒)則基本不會遇到這類溢出問題。
python time
時間格式在線轉換: https://www.epochconverter.com/
時區轉換
國際時區轉換在線計算器
世界時區劃分時差查詢
Python time文檔:https://docs.python.org/zh-cn/3/library/time.html
python獲取當前時間
- time.time():獲取當前的epoch時間(時間戳)
- time.localtime():獲取本地時間
- time.gmtime():獲取GMT時間
標準時間轉換為epoch時間
本文將標準時間定義為ISO 8601格式時間:YYYY-MM-DD hh:mm:ss.mil
兩種方法轉換為 Unix timestamp:
- calendar.timegm:轉換的時間格式為格林威治標準時間
- time.mktime:轉換的時間為本地時間(考慮了時區)
epoch時間轉換為標準時間
- time.localtime(epoch_time):轉換為本地時間,或者獲取本地時間
- time.gmtime(epoch_time):轉換為GMT時間,或者獲取GMT時間
- datetime.datetime.utcfromtimestamp(epoch_time):UTC時間
- datetime.datetime.fromtimestamp(epoch_time):本地時間
python datetime
獲取當前時間(本地時間)
out:
2020-09-28 14:15:24 Monday 1時間格式化
import datetime timestr = "2020-10-01 18:30:00" print(datetime.datetime.strptime(timestr, "%Y-%m-%d %H:%M:%S"))out:
2020-10-01 18:30:00timedelta
timedelta表示一個時間段,可用于時間計算。
語法:
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) import datetime now_time = datetime.datetime.now() # 當前時間加一天 now_time + datetime.timedelta(days=1) # 當前時間減一周 now_time + datetime.timedelta(weeks=-1)總結
以上是生活随笔為你收集整理的Python笔记:日期时间获取与转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用Python创建自己的加密货币
- 下一篇: Python 基础教程:位运算的奥妙