今天遇到了乙個聊天的
bug,因為時間戳沒有精確到float型別導致時間順序錯亂,顯示錯誤和一些聊天記錄會被覆蓋。於是了解了一下python時間的一些顯示和轉換方式。
python在遇到時間相關問題時候通常會用到以下幾種時間格式1。時間戳(int,float型別) 2。元組(struct_time型別)內涵九個元素 3。datetime型別(如:
2017-11-28 14:49:43.097000
)4。格式化的時間字串 (string型別)
時間戳作為其中一種表示時間的方式,是指格林威治時間
2023年01月
01日00時00分00秒(北京時間2023年01月01日08時00分00秒)起至現在的總秒數。
1)最簡單的獲取時間戳的方式是匯入 time模組 之後直接通過 time.time()方法可以獲得當前時間,獲得的時間戳型別是float型別。
import time
time.time()
2)time.gmtime()或者 time.localtime() 方法 將獲得的時間戳型別改為struct_time型別 兩種方法都可以傳入時間戳引數,預設傳入當前時間戳
(區別是gmtime()方法返回的是0時區的時間,localtime()方法返回的是當地時區的時間,中國是8時區,所以相差8個小時)
返回值為以下九個元素 time.struct_time(tm_year=2017, tm_mon=11, tm_mday=28, tm_hour=6, tm_min=1, tm_sec=15, tm_wday=1, tm_yday=332, tm_isdst=0)
3)from datetime import datetime
datetime.now()方法獲取datetime格式的當前時間(當前時區 作業系統設定的時區)。
4)時間轉換:
* struct_time轉化為時間戳
time.mktime(
t)
*struct_time轉換成自定義的string格式
time.strftime("%y-%m-%d %x", time.localtime())
精確到秒
*str 轉成struct_time
time.strptime(timestr, "%y-%m-%d %h:%m:%s")
*timestamp轉化為datetime
from datetime import datetime
datetime.fromtimestamp(time.time())
*datetime 轉timestamp
from datetime import datetime
dt = datetime(2017, 11, 18, 12, 20) # 用指定日期時間建立datetime
dt.timestamp() # 把datetime轉換為timestamp
*datetime 轉為str
from datetime import datetime
t=datetime.now() t.strftime(
"%y-%m-%d %h:%m:%s.%f"
)
*str 轉為datetime
from datetime import datetime
datetime.strptime('2017-11-28 15:19:59', '%y-%m-%d %h:%m:%s')
Python中各種時間格式轉換
大家平時寫python程式的時候難免會遇到各種各樣時間格式的轉換,從時間戳轉字串?從字串轉datetime格式等等,方法比較多,我覺得不太好記,而且也沒必要記,語法嘛有個地方總結了,用的時候方便查閱即可。今天稍作總結,有不正確的地方希望大家提出建議,逐步改進 coding utf 8 import ...
列印各種時間格式
列印各種時間格式 bin bash echo 顯示星期簡稱 如 sun date aecho 顯示星期全稱 如 sunday date aecho 顯示月份簡稱 如 jan date becho 顯示月份全稱 如 january date becho 顯示數字月份 如 12 date mecho 顯...
HIVE 各種時間格式處理
方法一 date format 只支援yyyy mm dd yyyymmdd000000 select date format 2019 10 07 yyyymmdd000000 20191007000000 方法二 from unixtime unix timestamp select from ...