【9】python模块:time
timetime模块提供各种时间相关的功能,与时间相关的模块有:time,datetime,calendar等。
时间有三种表示方式,一种是时间戳、一种是格式化时间、一种是时间元组。时间戳和格式化时间的相互转化,都需要先转化为时间元祖。
时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。
import time #导入time模块 time.sleep(30) #等待30秒 time.strftime('%Y-%m-%d %H:%M:%S') #当前的格式化时间 time.time()#返回当前的时间戳
1、两种时间格式的转化
(1)格式化好的时间---->时间元组---->时间戳
time_tuple = time.strptime('2038-08-29 19:23:59','%Y-%m-%d %H:%M:%S')#格式化好的时间-->时间元组,前面写要转化的时间,后面该时间的的格式 time.mktime(time_tuple)#时间元组-->时间戳
(2)时间戳---->时间元组---->格式化好的时间
# 时间戳-->时间元组,有三种写法 res=time.gmtime(318915696)#时间戳---->时间元组,自己定义的时间 res=time.gmtime(time.time())#时间戳---->时间元组,接收时间戳,并返回格林威治天文时间下的时间元组。 res=time.localtime(time.time())#时间戳---->时间元组,当前时间,当前时区 # 时间元组---->格式化时间 time.strftime('%Y-%m-%d %H:%M:%S',res)
2、封装函数
#封装函数:格式化时间-->时间戳 def str_to_timestamp(time_str=None,format='%Y%m%d%H%M%S'): #给默认值,如果传来的有值就不用默认值 #格式化好的时间转时间戳的 #不传参数的话返回当前的时间戳 if time_str:#如果有值 time_tuple = time.strptime(time_str, format) timestamp = time.mktime(time_tuple) else:#如果传进来的没有值 timestamp = time.time()#那就返回当前时间戳 return int(timestamp)#转化成int格式去掉小数点 print(str_to_timestamp())#会返回当前的时间戳 print(str_to_timestamp('20391123175123'))#不传格式 print(str_to_timestamp('2013-08-09','%Y-%m-%d'))#传格式
#封装函数:时间戳-->格式化时间 def timestamp_to_strtime(timestamp=None,format='%Y-%m-%d %H:%M:%S'): #这个函数是用来把时间戳转成格式化好的时间 #如果不传时间戳的话,那么就返回当前的时间 if timestamp:#如果传了时间戳,那么转成格式化好的时间 time_tuple = time.localtime(timestamp) str_time = time.strftime(format,time_tuple) else:#如果没有传,就返回当前格式化好的时间 str_time = time.strftime(format) return str_time
3、练习:怎么取3天前的当前时间
提示: 用当前的时间戳-3天的秒数,时间戳转成格式化好的时间
five = str_to_timestamp() - (3*24*60*60)#当前时间戳-3天的秒数 res = timestamp_to_strtime(five) print('50年后的时间是',res)