Python之time模块

time模块

  • 是和时间相关操作的模块

一、方法

(1)等待

  • 使用time.sleep()方法
import time
time.sleep(60) #等待60秒

(2)时间类型转换概念

1)时间戳:从计算机诞生那天到现在过了多少秒

2)格式化好的时间:20180915 14:08:53

3)为什么要使用时间戳?

如果使用格式化好的时间,想知道在当前时间的前60天的具体时间,就不能直接加减了,这时候使用时间戳更方便,因为时间戳是直接加减的。

(3)获取当前的时间戳

  • 使用time.time()方法
res=time.time() #获取当前的时间戳
print(res)
#结果为:1536992259.157
#默认精确到毫秒,用的时候强制类型转换一下

(4)获取当前格式化时间,并以一定的格式输出

  • 使用time.strftime()方法
res=time.strftime('%y-m-%d')
print(res) #结果:18-09-15
res=time.strftime('%Y-%m-%d %H:%M:%S')
print(res) #结果:2018-09-15 14:14:34 ,注意时间都用大写字母,月份用小写字母

(5)把时间元组转成格式化好的时间

  • 使用time.strftime()方法
res2=time.strftime('%Y-%m-%d',res) #res为传入的时间元组值
print(res2) #结果为:1970-09-02

(6)把格式化好的时间转成时间元组

  • 使用time.strptime()方法
time_tuple=time.strptime('1992-01-02','%Y-%m-%d') #把格式化好的时间转成时间元组
#注意.strptime()里面的变量,后面的格式必须跟前面传的字符串的格式保持一致
print(time_tuple)
#结果为:time.struct_time(tm_year=1992, tm_mon=10, tm_mday=2, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=276, tm_isdst=-1

(7)把时间戳转成时间元组

  • 使用time.gmtime()方法,获取的是标准时区的时间元组
res=time.gmtime('21098312')
#结果为:time.struct_time(tm_year=1970, tm_mon=9, tm_mday=2, tm_hour=4, tm_min=38, tm_sec=32, tm_wday=2, tm_yday=245, tm_isdst=0)
 
  • 使用time.localtime()方法,获取的是当前时区的时间元组

res=time.localime('21098312')

(8)把时间元组转成时间戳

  • 使用time.mktime()方法
print(time.mktime(time_tuple)) #结果为:694281600.0

二、格式化好的时间转换成时间戳

(1)步骤

1)先将格式化好的时间转成时间元组

2)再将时间元组转成时间戳

(2)使用方法

  • 1)使用time.strptime()方法,把格式化好的时间转成时间元组
time_tuple=time.strptime('1992-01-02','%Y-%m-%d') #把格式化好的时间转成时间元组
#注意.strptime()里面的变量,后面的格式必须跟前面传的字符串的格式保持一致
print(time_tuple)
#结果为:time.struct_time(tm_year=1992, tm_mon=10, tm_mday=2, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=276, tm_isdst=-1)
  • 2)使用time.mktime()方法,将时间元组转成时间戳
print(time.mktime(time_tuple)) #结果为:694281600.0

(3)实际应用

封装一个函数,将格式化好的时间转成时间戳。

#格式化好的时间转时间戳,如果不传参数就返回当前时间的时间戳
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)

三、时间戳转成格式化好的时间

(1)步骤

1)先将时间戳转成时间元组

2)再将时间元组转成格式化好的时间

(2)使用方法

  • 1)使用time.gmtime()方法,把时间戳转成时间元组
  • 注意:time.gmtime()这个函数默认是以标准时区的时间为准的,如果不在标准时区,要使用time.localtime()这个函数
res=time.gmtime('21098312')
#结果为:time.struct_time(tm_year=1970, tm_mon=9, tm_mday=2, tm_hour=4, tm_min=38, tm_sec=32, tm_wday=2, tm_yday=245, tm_isdst=0)
  • 使用time.localtime()方法,把时间戳转成时间元组
res=time.localtime(time.time()) #把时间戳转成时间元组,当前时区
  • 2)使用time.strftime()方法,将时间元组转成格式化好的时间
res2=time.strftime('%Y-%m-%d',res)
print(res2) #结果为:1970-09-02

(3)实际应用

封装一个函数,将时间戳转成转成格式化好的时间。

#这个函数时用来把时间戳转成格式化好的时间
#如果不传时间戳的话,就返回当前的时间
def timstamp_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

四、应用

1、取50年后的时间:

#如果要取到50年后的时间,就用当前的时间戳+50年的秒数,再使用这个函数
fifty=str_to_timestamp()+(50*365*24*60*60)
res=timestamp_to_strtime(fifty)
print('50年后的时间是',res)

2、取3天后的时间:

three_after=str_to_timestamp()+(3*365*24*60*60)
res1=timestamp_to_strtime(three_after)
print('3天后的时间是',res)

3、取3天前的时间:

three_before=str_to_timestamp()-(3*24*3600)
res=timestamp_to_strtime(three_before)
print('3天前的时间是',res)

 

posted @ 2018-10-07 18:25  意如柳  阅读(209)  评论(0编辑  收藏  举报