Python--time模块

本页包含time的相关方法:strtime、time、localtime、gmtime、ctime、mktime
封装好函数:时间戳与格式化好时间的相互转换

 

时间的两种方式
时间戳:time_stamp,从计算机诞生的那一天到现在过了多少秒,每过一秒加1
格式化好的时间:
时间元组:time_tuple,时间戳与格式化好的时间转换需通过时间元组中转

 

获取当前时间的时间戳、格式化好时间、时间元组

 1 #当前格式化好的时间
 2 import time,os,datetime
 3 print(time.strftime("%Y-%m-%d %H:%M:%S"))#取当前格式化好的时间。2022-03-11 17:36:59
 4 print(time.strftime("%y-%m-%d %H:%M:%S"))#注意Yy输出结果的区别。22-03-11 17:36:59
 5 print(datetime.datetime.today())#取当前格式化好的时间。2022-03-17 20:59:40.973372
 6 
 7 #当前时间戳
 8 print(time.time())#取当前时间戳。1646991419.9585357
 9 #时间戳的存在,便于时间计算,比如1天就是24小时*60分*60秒,3天再*3即可
10 print(1646990810+3*24*60*60)#1647250010
11 
12 # 当前时间元组
13 print(time.localtime())# 取当前时间的时间元组
14 print(time.localtime(1646991419.9585357))#取指定时间的时间元组
15 #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)
16 print(time.gmtime(1646991419.9585357))
17 #注意: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)

 

时间戳与格式化好时间相互转换

 1 # 时间戳转化为格式化好的时间
 2 # 方法一:先转换为时间元组,再用strftime,不转换会报错
 3 creat_time = os.path.getctime("222.txt")#获取某文件创建时间。creat_time:1646055876.3876796
 4 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)
 5 print(time.strftime("%Y-%m-%d %H:%M:%S",time_tuple))#转化为格式好的时间。2022-02-28 21:44:36
 6 
 7 #方法二:可以直接用ctime非标准化时间
 8 print(time.ctime(creat_time))#Mon Feb 28 21:44:36 2022
 9 
10 # 格式化好的时间转换为时间戳
11 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)
12 time_stamp = time.mktime(time_tuple)
13 print(time_stamp)#把时间元组转化为时间戳。1646055876.0
14 print(int(time_stamp))#去掉小数点,1646055876

 

封装好的函数:时间戳与时间相互转换

 1 # 格式化好的时间转化为时间戳。
 2 def  str_to_timestamp(str = None ,format= "%Y-%m-%d %H:%M:%S"):
 3     # format默认格式,想输出其他格式可以传参
 4     if str :
 5         time_tuple = time.strptime(str,format)#时间元组
 6         return int(time.mktime(time_tuple))#如果传参就输出传参对应的时间戳
 7     return int(time.time()) #str不传参就输出当前时间的时间戳
 8 
 9 print(str_to_timestamp("2022-02-28 21:44:36")) #format默认格式
10 print(str_to_timestamp("2022-02-28","%Y-%m-%d")) #fomat手动输入格式,前面的str要与之格式一致
11 print(str_to_timestamp())#为空输出档期按时间时间戳
12 
13 # 时间戳转化为格式化好的时间
14 def stamptime_to_str(stamptime = None,format= "%Y-%m-%d %H:%M:%S"):
15     #如果不传时间戳,就返回当前时间格式化好的时间
16     if stamptime :
17         time_tuple = time.localtime(stamptime)
18         return time.strftime(format,time_tuple)
19     return time.strftime(format)#这一行等于下面三行
20     # else:
21     #     time_tuple = time.localtime()
22     #     return time.strftime(format, time_tuple)
23 
24 print(stamptime_to_str())
25 print(stamptime_to_str(1646055876.3876796))
26 print(stamptime_to_str(1646055876,"%Y-%m-%d"))

 

posted @ 2022-03-11 20:18  菊丫头  阅读(61)  评论(0)    收藏  举报