Python 之 time 子產品的 time() 函數生成一組格式為 10 位數的浮點數被稱之為時間戳,它是從格林威治時間 1970年1月1日 00:00:00 起至此時過去的總秒數。
1、調用time()的方法
子產品名.函數名:time.time()
import time,random
def P(s, c=''): # 列印值和值的類型的自定義函數,參數 s 為列印的值,參數 c 為值的說明文字(預設為空)
return print('{}\n值為:{}\n類型為:{}\n'.format(('' if c == '' else '\n'+c),s,type(s)))
# 取系統目前時間戳
time0 = time.time()
P(time0)
輸出結果如下:
值為:1656081341.2252388
類型為:<class ‘float’>
附上 time 庫幾個常用函數和例子:
time.strptime():将特定字元串格式的時間,轉換為struct_time
time.strftime():将struct_time,轉換為特定字元串格式的時間
time.time():将目前時間轉換為時間戳
time.mktime():将struct_time轉換為時間戳,輸入當地struct_time,輸出格林威治時間戳
time.localtime():将時間戳轉換為struct_time(當地時間)
time.gmtime():将時間戳轉換為struct_time(格林威治時間)
localtime 與 gmtime 兩者關系:例如,localtime 在東八區的中原標準時間 + 8小時(時間戳加上 8×60×60 = 28800 秒)= gmtime 在中時區的格林威治時間,換言之:格林威治時間比中原標準時間晚 8 個小時。
例子:
取當地日期時間 current_time 的語句為:time.localtime()
值為:struct_time(tm_year=2022, tm_mon=6, tm_mday=26, tm_hour=22, tm_min=5, tm_sec=10, tm_wday=6, tm_yday=177, tm_isdst=0)
類型為:<class ‘struct_time’>
将 current_time 轉換為字元串型 date 标準格式公曆日期時間的語句為:time.strftime(“%Y-%m-%d %H:%M:%S”, current_time)
值為:2022-06-26 22:05:10
類型為:<class ‘str’>
将 date 轉換為 timestamp 格林威治時間戳的語句為:time.time(time.strptime(date,“%Y-%m-%d %H:%M:%S”))
值為:1656252310.0
類型為:<class ‘float’>
将 timestamp 加 12 小時轉換為字元串型标準格式【格林威治】公曆日期時間的語句為:time.strftime(‘%Y-%m-%d %H:%M:%S’, time.gmtime(timestamp + 12×60×60))
值為:2022-06-27 02:05:10
類型為:<class ‘str’>
将 timestamp 加 12 小時轉換為字元串型标準格式【當地】公曆日期時間的語句為:time.strftime(“%Y-%m-%d %H:%M:%S”, time.localtime(timestamp + 12×60×60))
值為:2022-06-27 10:05:10
類型為:<class ‘str’>
如何将 date = ‘【20220203^120356】’ 等式右邊資料轉換為标準日期時間格式?
先轉為時間戳,語句是:timestamp = time.mktime(time.strptime(date,“【%Y%m%d^%H%M%S】”))
值為:1643862236.0
類型為:<class ‘float’>
再轉為标準日期時間格式,語句是:date = time.strftime(“%Y-%m-%d %H:%M:%S”, time.localtime(timestamp))
值為:2022-02-03 12:03:56
類型為:<class ‘str’>
2、通常前後兩個時間戳之差是秒數之差
采用預設的10位數字時間戳機關是秒,前後兩個時間戳之差是秒數之差。有人為了增加計算的精度,将時間戳擴大1000倍,以毫秒為機關計數,此時間戳變為13位數字。需要強調的“秒”轉換為“毫秒”是1000倍,千萬别想當然記成“分”轉換“秒”的60倍,如果采用13位數字時間戳,前後兩個時間戳之差就是毫秒數之差。當然,也可以通過類型變換,變成小時數之差(見本文第3條)。
# 随機延長1-10秒
time.sleep(random.uniform(1-10秒))
time1 = time.time()
t = time1-time0
P(t)
輸出結果如下:
值為:5.554218292236328
類型為:<class ‘float’>
3、将時間戳之差變成标準的【小時:分】(H:M)格式的方法
【小時】取值采用 t 值除以3600取整得到,【分】取值采用 t 值除以60再用60進行模運算取整得到。最後,采用 2 位右對齊空位填 0 即 {:0>2} 得到工整的輸出格式。
# 為了顯示【小時:分】格式,将前邊的時間戳之差 t 放大3600倍,由秒差變為小時差
t = t*60*60
P('标準時間格式:{:0>2}:{:0>2}'.format(int(t/3600),int(t/60%60)))
輸出結果如下:
标準時間格式:05:33
類型為:<class ‘str’>
希望以上分享對您有啟發或幫助。