Python--time模块


 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"))