python時間戳轉換
A. python時間轉換為整數
最近寫的項目用到了knn模型進行預測性分析,但是需要把日期型的欄位轉為整型,換言之,就是時間戳。
將時間轉換成時間戳
例如:
將時間2019-4-13 10:02:23轉換成時間戳,具體的操作過程為:
利用strptime()函數將時間轉換成時間數組
利用mktime()函數將時間數組轉換成時間戳
import time
dt = "2019-4-13 10:02:23"
# 轉為時間數組
timeArray = time.strptime(dt,"%Y-%m-%d %H:%M:%S")
# 轉為時間戳
timeStamp = int(time.mktime(timeArray))
print(timeStamp)
B. python之time模塊
time 模塊常用的與時間相關的類和函數:
time 模塊的 struct_time 類代表一個時間對象,可以通過 索引和屬性名 訪問值。 對應關系如下:
索引 —— 屬性 值
0 —— tm_year(年) 如:1945
1 —— tm_mon(月) 1 ~ 12
2 —— tm_mday(日) 1 ~ 31
3 —— tm_hour(時) 0 ~ 23
4 —— tm_min(分) 0 ~ 59
5 —— tm_sec(秒) 0 ~ 61
6 —— tm_wday(周) 0 ~ 6
7 —— tm_yday(一年內第幾天) 1 ~ 366
8 —— tm_isdst(夏時令) -1、0、1
localtime() 表示當前時間,返回類型為 struct_time 對象 ,示例如下所示:
輸出結果:
time()——返回當前時間的時間戳
gmtime([secs])——將時間戳轉換為格林威治天文時間下的 struct_time,可選參數 secs 表示從 epoch 到現在的秒數,默認為當前時間
localtime([secs])——與 gmtime() 相似,返回當地時間下的 struct_time
mktime(t) localtime() 的反函數
asctime([t]) 接收一個 struct_time 表示的時間,返回形式為:Mon Dec 2 08:53:47 2019 的字元串
ctime([secs]) ctime(secs) 相當於 asctime(localtime(secs))
strftime(format[, t]) 格式化日期,接收一個 struct_time 表示的時間,並返回以可讀字元串表示的當地時間
sleep(secs) 暫停執行調用線程指定的秒數
altzone 本地 DST 時區的偏移量,以 UTC 為單位的秒數
timezone 本地(非 DST)時區的偏移量,UTC 以西的秒數(西歐大部分地區為負,美國為正,英國為零)
tzname 兩個字元串的元組:第一個是本地非 DST 時區的名稱,第二個是本地 DST 時區的名稱
基本使用如下所示:
strftime 函數日期格式化符號說明如下所示:
C. python根據時間戳獲取時分秒
時間戳可簡單理解為自1970/01/01/ 00:00:00 到現在經過的秒數,如果要計算日期運算,因為涉及到潤年,一般使用語言自帶的庫實現比較簡單和高效。但如果只是取時間即時分秒,完全可以不用依賴庫,通過模運算和取整運算的方式實現,並且性能比內部庫函數效率更高。
運行結果,100萬次
1000萬次
性能快了接近200%,如果有涉及到大數據分析場景,百萬甚至千萬級別次的調用時,該演算法還是有意義的
D. python中怎麼把datetime類型轉換成timestamp
Python3.6.4(v3.6.4:d48ecebad5,Dec182017,21:07:28)
[GCC4.2.1(AppleInc.build5666)(dot3)]ondarwin
Type"help","right","credits"or"license"formoreinformation.
>>>importtime
>>>fromdatetimeimportdatetime
>>>now=datetime.now()
>>>timestamp=int(time.mktime(now.timetuple()))
>>>timestamp
1520493295
>>>timestamp_microsecond=float('{}{:06}'.format(timestamp,now.microsecond))/1000000
>>>timestamp_microsecond
1520493295.337066
E. python怎麼將時間戳轉化為日期
當前時間戳:time.time()
當前日期:time.ctime()
1、Python下日期到時間戳的轉換
import datetime
import time
dateC=datetime.datetime(2010,6,6,8,14,59)
timestamp=time.mktime(dateC.timetuple())
print timestamp
2、Python下將時間戳轉換到日期
import datetime
import time
ltime=time.localtime(1395025933)
timeStr=time.strftime("%Y-%m-%d %H:%M:%S", ltime)
print timeStr
F. Python基礎編程——標准庫之fileinput與time模塊
在前一節我們介紹了標准庫的sys模塊和os模塊,本節將介紹標准庫的fileinput模塊和time模塊。
fileinput模塊能夠讓我們輕松地迭代一系列文本文件中的行。
fileinput模塊中一些重要的函數,也是我們在實際開發中需要經常用到的,具體如下表所示:
fileinput.input(): fileinput模塊中最重要的函數,它返回一個可在for循環中進行迭代的對象。
fileinput. filename(): 返回當前文件(即正在處理的行所屬的文件)的文件名。
fileinput. lineno(): 返回當前行的編號。
fileinput. filelineno(): 返回當前行在當前文件中的行號。
fileinput. isfirstline(): 在當前行為當前文件中的第一行時返回True,否則返回False。
fileinput. isstdin():在當前文件為sys.stdin時返回True,否則返回False。
fileinput. nextfile():關閉當前文件並跳到下一個文件,且計數時忽略跳過的行。
fileinput. close():關閉整個文件鏈並結束迭代。
上面關於介紹的fileinput模塊中的函數的實例用法如下my_fileinput.py程序所示:
time模塊包含用於獲取當前時間、操作時間和日期、從字元串中讀取日期、將日期格式化為字元串的函數。日期可表示為實數,也可表示為包含9個整數的元組。例如,元組(2021, 6, 8, 22, 13, 56, 1, 21, 0)表示2021年6月8日22時13分56秒。日期元組中各欄位含義如下表所示:
秒的取值范圍為0~61,這考慮到了閏一秒和閏兩秒的情況。夏令時數字是一個布爾值(True或False),但如果你使用-1,那麼mktime[將時間元組轉換為時間戳(從新紀元開始後的秒數)的函數]可能得到正確的值。
模塊time中有一些重要的函數,也是我們在實際開發中需要經常用到的,具體如下表所示:
time.asctime(): 將當前的時間轉換成字元串形式,如果不想使用當前時間,也可以傳遞一個時間元組作為參數。如果要使用更復雜的時間格式化,可以使用strftime()函數。
time.localtime(): 將一個實數轉換成時間元組(這里是本地時間),如果要轉換成國際標准時間,應該使用time.gmtime()函數。需要注意這里的實數是一個從新紀元開始後的秒數,世界新紀元指的是 1970年1月1日0時0分0秒,如果是本地新紀元的話,需要加上本地的時區時間。
time.mktime(): 將時間元組轉換成從新紀元開始後的描述,這與time.local()函數功能相反。
time.sleep(): 讓解釋器等待指定的秒數,即程序暫停指定的秒數。
time.strftime(): 將時間元組按照指定的格式轉換成字元串格式。常用的格式符有:%Y表示年,%m表示月,%d表示日,%H表示時,%M表示分,%S表示秒。更多格式符可參考官方標准文檔。
上面關於介紹的time模塊中的函數的實例用法如下my_time.py程序所示:
注意:另外還有兩個較新的關於時間的模塊:datetime和timeit,大家可執行查閱相關文檔。
本節主要介紹了以下內容:
如果有需要文中小程序的可以私信我喲!
歡迎大家轉發、評論!
#Python# #python# #Python基礎# #python打卡# #Python編程從入門到實踐#
G. python能把正常時間轉化成毫秒級別的時間戳嗎
可以,需要乘以1000,比如
importtime
printtime.time()*1000#這個就是毫秒級別的時間戳,不乘以1000就是秒級時間戳
又如正常時間轉換為時間戳,下面的例子需要你安裝時間擴展arrow,安裝方法很簡單
pip install arrow,這都是廢話了,下面上例子
importarrow
datetime="2016-12-2222:30:50+08:00"
printarrow.get(datetime).timestamp#這個是秒級別的時間戳,乘以1000就是毫秒級別的時間戳了