zoukankan      html  css  js  c++  java
  • Python基础系列讲解——时间模块详解大全之time模块

    Python中提供处理时间日期相关的内置模块有time、datetime和calendar。

    time模块中大多数函数调用了所在平台C library 的同名函数,因此更依赖于操作系统层面,所以time模块的有些函数与平台相关,在不同的平台上可能会有不同的效果,这点需要特别注意下,即time模块的功能并不适用于所有平台。

    使用时需要导入time模块,如下所示:

    import time
    

    time模块的时间表现的格式主要有以下三种:

    • timestamp时间戳。时间戳表示的是从新纪元开始按秒计算的偏移量,任何操作系统都可以运行time.gmtime(0)查找此系统的新纪元。对于时间戳的最大极限日期取决于系统中C函数库所支持的日期,对于32位系统而言为2038年,如果需要处理在所述范围之外的日期,则需要考虑使用datetime模块。如下所示:
    #查找此系统的新纪元
    print(time.gmtime(0))
    #time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
    
    #生成当前时间的timestamp
    print(time.time())#1556973222.546307
    
    • struct_time时间元组,共有九个元素组,gmtime()、localtime()和strptime()都以时间元祖(struct_time)的形式返回。如下所示:

    图片描述

    #生成struct_time
    print(time.localtime())#time.struct_time(tm_year=2019, tm_mon=5, tm_mday=11, tm_hour=12, tm_min=20, tm_sec=58, tm_wday=5, tm_yday=131, tm_isdst=0)
    
    • format time格式化时间。格式化的结构可使得时间更具有可读性,主要有自定义格式和固定格式两种,比如:
    #生成format_time
    #生成自定义格式的时间表示格式
    print(time.strftime("%Y-%m-%d %X",time.localtime()))#2019-05-04 20:40:01
    #生成固定格式的时间表示格式 叉车配件
    print(time.asctime(time.localtime()))#Sat May 11 19:45:16 2019
    print(time.ctime(time.time()))#Sat May 11 19:45:16 2019
    print(time.ctime(time.time()+10))#Sat May 11 19:45:26 2019
    

    time模块中timestamp、struct_time和format time三种时间格式按以下方式转换:

    #struct_time to timestamp  note:time.localtime()——struct_time
    print(time.mktime(time.localtime()))
    #1556975223.0
    
    # timestamp to struct_time 格林威治时间 note:time.time()——timestamp
    print(time.gmtime(time.time()))
    #time.struct_time(tm_year=2019, tm_mon=5, tm_mday=11, tm_hour=4, tm_min=20, tm_sec=58, tm_wday=5, tm_yday=131, tm_isdst=0)
    
    #format_time to struct_time
    print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))
    #time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1)
    
    #struct_time to format_time
    print(time.strftime("%Y-%m-%d %X"))#2019-05-11 08:45:48
    print(time.strftime("%Y-%m-%d %X",time.localtime()))#2019-05-11 08:45:48
    

    关于time.asctime()和time.ctime()在上文中已经提到,可以分别将struct_time和timestamp时间格式生成固定的format time格式。

    time模块中关于系统时间的处理有如下几个函数:

    time.clock()以秒为单位返回当前CPU运行时间,用于衡量不同程序的耗时,比time.time()更实用。不过在Python3.3之后就不推荐使用,原因是该方法依赖于操作系统,官方建议使用per_counter(返回系统运行时间)或process_time(返回进程运行时间)代替。如下所示:

    print(time.clock())#0.221209
    #DeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
    

    time.perf_counter()返回系统的运行时间(计时器的精准时间),包含整个系统的睡眠时间。由于返回值的基准点是未定义的,所以只有连续调用的结果之间的差才是有效的。如下所示:

    print(time.perf_counter())#4.373607855
    time.sleep(5)
    print(time.perf_counter())#9.374290978
    

    time.process_time()返回当前进程执行CPU的时间总和,不包含睡眠时间.由于返回值的基准点是未定义的,所以只有连续调用的结果之间的差才是有效的。如下所示:

    print(time.process_time())#0.385954
    time.sleep(5)
    print(time.process_time())#0.385982
    

    time.sleep(secs)推迟调用线程的运行,secs的单位是秒。如下所示:

    time.sleep(5)
  • 相关阅读:
    最新 蓝鲸人java校招面经 (含整理过的面试题大全)
    最新 上海轻轻java校招面经 (含整理过的面试题大全)
    最新 苏州朗动java校招面经 (含整理过的面试题大全)
    最新 医渡云java校招面经 (含整理过的面试题大全)
    变量的自动类型转换和强制类型转换(day01_10)
    java的数据类型(day01_09)
    常用的dos命令操作(day01_03)
    1.镜像-虚拟光驱-光驱
    Spring基于配置文件的方式来配置AOP
    Spring-AOP(切面的优先级&&&重用切点表达式)
  • 原文地址:https://www.cnblogs.com/xyou/p/10855830.html
Copyright © 2011-2022 走看看