• 【python】详解time模块功能asctime、localtime、mktime、sleep、strptime、strftime、time等函数以及时间的加减运算


    在Python中,与时间处理相关的模块有:time、datetime以及calendar。学会计算时间,对程序的调优非常重要,可以在程序中狂打时间戳,来具体判断程序中哪一块耗时最多,从而找到程序调优的重心处。这里先来讲一个time模块。

    time模块所包含的函数能够实现以下功能:获取当前的时间、操作时间和日期、从字符串读取时间及格式化时间为字符串。

    timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量;返回时间戳的函数主要有time()、clock()等
    struct_time时间元组,共有九个元素组。gmtime(),localtime(),strptime()
    format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。
    不同格式之间的转换如图:

    其中format_string 类型的时间和struct_time之间可以转换,timestamp时间戳可以和struct_time之间进行转化,但是时间戳和格式化时间是不能直接转换的。

    struct_time元组结构:


    format time结构化表示:


    1、time.time()当前时间的时间戳,返回float数据,自1970年1月1日开始按照秒计算的偏移量,可以进行差值计算得到秒差

    In [1]: import time
    #首先定义第一个时间点的时间戳a
    In [2]: a = time.time()
    计算当前时间点的时间与a之间的时间间隔,以秒为单位
    In [3]: b = time.time() -a
    In [4]: b
    Out[4]: 10.753291130065918

    2、time.clock()该函数有两个功能:

    在第一次调用的时候,返回的是程序运行的实际时间;
    以第二次之后的调用,返回的是自第一次调用后,到这次调用的时间间隔
    在win32系统下,这个函数返回的是真实时间(wall time),而在Unix/Linux下返回的是CPU时间。
    #第一次调用时,返回程序实际的运行时间
    In [6]: time.clock()
    Out[6]: 4.266666666666667e-07
    #第二次调用返回的是距离上一次调用的时间间隔
    In [7]: time.clock()
    Out[7]: 3.48674048
    #该次调用返回的是距离上一次调用的时间间隔
    In [8]: time.clock()
    Out[8]: 7.2176200533333335

    3、time.gmtime([secs])可以将timestamp时间戳转化为时间元组

    #如果没有给定时间戳,直接返回当前时点的国际伦敦时间
    In [5]: time.gmtime()
    Out[5]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=14, tm_min=49, tm_sec=37, tm_wday=4, tm_yday=12, tm_isdst=0)
    #可以将时间戳转化为国际时间
    In [9]: a = time.time()
    In [10]: time.gmtime(a)
    Out[10]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=15, tm_min=1, tm_sec=51, tm_wday=4, tm_yday=12, tm_isdst=0)
    1
    2
    3
    4
    5
    6
    7
    4、time.localtime([secs])可以将timestamp时间戳转为时间元组

    #可以将时间戳转为本地时间
    In [13]: time.localtime()
    Out[13]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=23, tm_min=6, tm_sec=14, tm_wday=4, tm_yday=12, tm_isdst=0)
    #如果没有给定时间戳,直接返回当前时点的本地时间
    In [12]: time.localtime(a)
    Out[12]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=23, tm_min=1, tm_sec=51, tm_wday=4, tm_yday=12, tm_isdst=0)

    5、time.mktime(t):将一个struct_time转化为时间戳
    time.mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数表示时间的浮点数。如果输入的值不是一个合法的时间,将触发 OverflowError 或 ValueError。

    参数:t – 结构化的时间或者完整的9位元组元素
    #将struct_time时间元组转化为时间戳
    In [14]: time.mktime(time.localtime())
    Out[14]: 1515770088.0

    6、time.sleep(secs):线程推迟指定的时间运行 线程睡眠指定时间,单位为秒。

    In [15]: time.time()
    ...: for i in range(3):
    ...: print(i)
    ...: time.sleep(5)
    ...: time.time()

    Out[15]: 1515770366.3641038

    7、time.asctime([t])*生成固定格式的时间表示格式,把一个表示时间的元组或者struct_time*表示为’Sat Jan 13 21:56:34 2018’这种形式。如果没有给参数,会将time.localtime()作为参数传入。

    参数:t – 9个元素的元组或者通过函数 gmtime() 或 localtime() 返回的时间值;
    In [1]: import time
    In [2]: time.asctime()
    Out[2]: 'Sat Jan 13 21:56:34 2018'
    1
    2
    3
    8、time.ctime([secs]) 生成固定格式的时间表示格式,把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果为指定参数,将会默认使用time.time()作为参数。它的作用相当于time.asctime(time.localtime(secs)) 。

    参数:sec – 要转换为字符串时间的秒数
    In [4]: time.time()
    Out[4]: 1515852108.7154894

    In [5]: time.ctime(time.time())
    Out[5]: 'Sat Jan 13 22:01:56 2018'

    In [6]: a = time.time()

    In [7]: time.ctime(a)
    Out[7]: 'Sat Jan 13 22:02:05 2018'

    9、time.strftime( format [, t] ) 通过函数将struct_time转成格式字符串,把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串,格式由参数format决定。如果未指定,将传入time.localtime()。如果元组中任何一个元素越界,就会抛出ValueError的异常。函数返回的是一个可读表示的本地时间的字符串。
    参数:

    format:格式化字符串
    t :可选的参数是一个struct_time对象


    #将时间元组转化为format年月日格式
    In [15]: time.strftime("%Y-%m-%d",time.gmtime())
    Out[15]: '2018-01-13'
    #%X返回当地时间
    In [17]: time.strftime("%Y-%m-%d %X")
    Out[17]: '2018-01-13 22:16:35'
    #返回当地的日期和时间
    In [18]: time.strftime("%x %X")
    Out[18]: '01/13/18 22:17:14'
    #直接使用字符串拼接成格式时间字符串
    In [21]: tt = time.gmtime()
    In [22]: str(tt.tm_year) + "年" + str(tt.tm_mon) + "月" + str(tt.tm_mday) + "日"
    Out[22]: '2018年1月13日'

    10、time.strptime(string,format) 将格式字符串转化成struct_time。该函数是time.strftime()函数的逆操作。time.strptime() 函数根据指定的格式把一个时间字符串解析为时间元组。所以函数返回的是struct_time对象。

    参数:string :时间字符串;format:格式化字符串;
    #创建一个时间字符串变量strtime
    strtime = "2018-01-13 22:20:30"
    #通过strptime()函数将strtime转化成strcut_time形式,格式参数必须的"%Y-%m-%d %H:%M:%S",且必须strtime的时间参数一一匹配
    In [27]: time.strptime(strtime,"%Y-%m-%d %H:%M:%S")
    Out[27]: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=13, tm_hour=22, tm_min=20, tm_sec=30, tm_wday=5, tm_yday=13, tm_isdst=-1)

    11、time加减主要是通过时间戳的方式进行加减

    In [28]: a = time.time()

    In [29]: b = time.time()

    In [30]: a+b
    Out[30]: 3031709297.679469

    In [31]: b-a
    Out[31]: 10.370728731155396

  • 相关阅读:
    win7同时安装python2和python3
    Centos6.8安装python3.6
    Typescript的接口
    ES5中的类相关/Typescript的类相关
    Typescript介绍
    Global Interpreter Lock 全局解释器锁
    Go语言设计模式(五)
    Go语言设计模式(四)
    Go语言反射
    Go语言程序设计(三)
  • 原文地址:https://www.cnblogs.com/tan2810/p/10641046.html
Copyright © 2020-2023  润新知