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