Python--time模組
阿新 • • 發佈:2022-03-11
1 #兩種時間方式
2 #時間戳:time_stamp,從計算機誕生的那一天到現在過了多少秒,每過一秒加1
3 #格式化好的時間:
4 #時間元組:time_tuple
5
6 import time,os
7
8 print(time.strftime("%Y-%m-%d %H:%M:%S"))#取當前格式化好的時間。2022-03-11 17:36:59
9 print(time.strftime("%y-%m-%d %H:%M:%S"))#注意Yy輸出結果的區別。22-03-11 17:36:59
10 print(time.time())#取當前時間戳。1646991419.9585357
11
12 #時間戳的存在,便於時間計算,比如1天就是24小時*60分*60秒,3天再*3即可
13 print(1646990810+3*24*60*60)#1647250010
14
15 # 時間元組
16 print(time.localtime())# 取當前時間的時間元組
17 print(time.localtime(1646991419.9585357))#取指定時間的時間元組
18 #localtime取本地時間,所以優先選擇這個。time.struct_time(tm_year=2022, tm_mon=3, tm_mday=11, tm_hour=17, tm_min=36, tm_sec=59, tm_wday=4, tm_yday=70, tm_isdst=0)
19 print(time.gmtime(1646991419.9585357))
20 #注意:gmtime取標準時區的時間,非東八區時間。time.struct_time(tm_year=2022, tm_mon=3, tm_mday=11, tm_hour=9, tm_min=36, tm_sec=59, tm_wday=4, tm_yday=70, tm_isdst=0)
21
22
23 # 時間戳轉化為格式化好的時間
24 # 方法一:先轉換為時間元組,再用strftime,不轉換會報錯
25 creat_time = os.path.getctime("222.txt")#獲取某檔案建立時間。creat_time:1646055876.3876796
26 time_tuple = time.localtime(creat_time)#轉化為時間元組。time_tuple:time.struct_time(tm_year=2022, tm_mon=2, tm_mday=28, tm_hour=21, tm_min=44, tm_sec=36, tm_wday=0, tm_yday=59, tm_isdst=0)
27 print(time.strftime("%Y-%m-%d %H:%M:%S",time_tuple))#轉化為格式好的時間。2022-02-28 21:44:36
28
29 #方法二:可以直接用ctime非標準化時間
30 print(time.ctime(creat_time))#Mon Feb 28 21:44:36 2022
31
32 # 格式化好的時間轉換為時間戳
33 time_tuple = time.strptime("2022-02-28 21:44:36","%Y-%m-%d %H:%M:%S")#格式化好的時間轉化為時間元組。time.struct_time(tm_year=2022, tm_mon=2, tm_mday=28, tm_hour=21, tm_min=44, tm_sec=36, tm_wday=0, tm_yday=59, tm_isdst=-1)
34 time_stamp = time.mktime(time_tuple)
35 print(time_stamp)#把時間元組轉化為時間戳。1646055876.0
36 print(int(time_stamp))#去掉小數點,1646055876
37
38
39 # 格式化好的時間轉化為時間戳。
40 def str_to_timestamp(str = None ,format= "%Y-%m-%d %H:%M:%S"):
41 # format預設格式,想輸出其他格式可以傳參
42 if str :
43 time_tuple = time.strptime(str,format)#時間元組
44 return int(time.mktime(time_tuple))#如果傳參就輸出傳參對應的時間戳
45 return int(time.time()) #str不傳參就輸出當前時間的時間戳
46
47 print(str_to_timestamp("2022-02-28 21:44:36")) #format預設格式
48 print(str_to_timestamp("2022-02-28","%Y-%m-%d")) #fomat手動輸入格式,前面的str要與之格式一致
49 print(str_to_timestamp())#為空輸出檔期按時間時間戳
50
51 # 時間戳轉化為格式化好的時間
52 def stamptime_to_str(stamptime = None,format= "%Y-%m-%d %H:%M:%S"):
53 #如果不傳時間戳,就返回當前時間格式化好的時間
54 if stamptime :
55 time_tuple = time.localtime(stamptime)
56 return time.strftime(format,time_tuple)
57 return time.strftime(format)#這一行等於下面三行
58 # else:
59 # time_tuple = time.localtime()
60 # return time.strftime(format, time_tuple)
61
62 print(stamptime_to_str())
63 print(stamptime_to_str(1646055876.3876796))
64 print(stamptime_to_str(1646055876,"%Y-%m-%d"))