zoukankan      html  css  js  c++  java
  • python常用模块——time

    time模块

    一、time模块基础

    三个时间表示:1.时间戳;2.结构化时间;3.格式化时间;

    1.时间戳

    从1970年1月1日到现在的秒数;

    2.结构化时间

    一个时间的元组; 内容如下:time.structtime(tmyear=2018, tmmon=1, tmmday=19, tmhour=10, tmmin=39, tmsec=45, tmwday=4, tmyday=19, tmisdst=0)

    依次为:
        tm_year     年份(包括世纪,如1998)
        tm_mon      月(1-12)
        tm_mday     天(1-31)
        tm_hour     小时(0-23)
        tm_min      分钟(到59)
        tm_sec      秒(到59)
        tm_wday     一周的第几天(0-6,星期一是0)
        tm_yday     一年中的第几天(一天一年,1-366)
        tm_isdst    夏令时(夏时制)标志(- 1, 0或1)
    

    3.格式化时间

    例如: 2018-01-19 10:43:36

    二、 time模块方法

    官方time模块介绍: https://docs.python.org/3/library/time.html

    1. asctime(...)

    asctime([tuple]) -> string
    将 结构化时间 转化为 字符串形式;当不指定参数时,默认使用localtime;
    例如:
        import time
        t_time=time.localtime()           # t_time = time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=10, tm_min=57, tm_sec=15, tm_wday=4, tm_yday=19, tm_isdst=0)
        print(time.asctime(t_time))       # 输出 Fri Jan 19 10:57:15 2018
    

    2. clock(...)

    clock() -> floating point number
    记录CPU使用的时间。
    例如:当执行 print(time.clock()) 时,记录CPU执行print语句的时间;
    

    3. ctime(...)

    ctime(seconds) -> string
    指定参数秒数,返回一个字符串时间。
    如果指定参数,则返回时间是: 零时区1970年1月1日0点0分0秒时的当前时区localtime + 指定的秒数。
    如果未指定参数,则返回时间为:当前的本地时间localtime
    
    假如现在北京时间是东八区,指定秒数30: time.ctime(30),则返回  Thu Jan  1 08:00:30 1970 ; 假如不指定秒数,则返回当前时间 local_time
    例如:
        import time
        print(time.ctime(30))        # 输出 Thu Jan  1 08:00:30 1970
        print(time.ctime())          # 输出 Fri Jan 19 11:08:41 2018
        print(time.localtime())      # 输出 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=11, tm_min=08, tm_sec=41, tm_wday=4, tm_yday=19, tm_isdst=0)
    

    4. get_clock_info(...)

    get_clock_info(name: str) -> dict
    暂时跳过;以后补充;
    

    5. gmtime(...)

    gmtime([seconds]) -> (tm_year, tm_mon, tm_mday, tm_hour, tm_min,tm_sec, tm_wday, tm_yday, tm_isdst)
    指定参数秒数,返回的格式是结构化时间;
    如果指定参数,则返回的时间为:1970年1月1日0点0分 + 指定的秒数;
    如果未指定参数,则返回 当前UTC(零时区的)时间。即东八区北京时间减去8小时的时间。
    
    例如:
    import time
    print(time.gtime(30))        # 输出 time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1, tm_isdst=0)
    print(time.gtime())          # 输出 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=3, tm_min=22, tm_sec=13, tm_wday=4, tm_yday=19, tm_isdst=0)
    print(time.localtime())      # 输出本地时间 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=11, tm_min=22, tm_sec=13, tm_wday=4, tm_yday=19, tm_isdst=0)
    

    6. localtime(...)

    localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min,
                              tm_sec,tm_wday,tm_yday,tm_isdst)
    指定参数,返回结构化时间;
    如果指定了参数,则返回时间为:零时区1970年1月1日0点0分时,当前时区(如东八区)的localtime + 指定的秒数
    如果未指定参数,则返回时间为:当前的本地时间localtime
    
    例如:
    import time
    print(time.localtime(30))    # time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1, tm_isdst=0)
    print(time.localtime())      # time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=11, tm_min=45, tm_sec=26, tm_wday=4, tm_yday=19, tm_isdst=0)
    print(time.ctime())          # Fri Jan 19 11:45:26 2018
    

    7. mktime(...)

    mktime(tuple) -> floating point number
    将结构化时间转换为时间戳;
    
    例如:
    import time
    t_time=time.localtime()
    print(t_time)                # time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=11, tm_min=52, tm_sec=21, tm_wday=4, tm_yday=19, tm_isdst=0)
    print(time.mktime(t_time))   # 1516333941
    

    8. monotonic(...)

    monotonic() -> float
    不能倒退的单调时钟;以后补充
    

    9. perf_counter(...)

    perf_counter() -> float
    计数器;以后补充
    

    10. process_time(...)

    process_time() -> float
    用于分析的过程时间:内核和用户空间CPU时间之和。
    

    11. sleep(...)

    sleep(seconds)
    睡眠指定的秒数;必须指定,可以为浮点数;
    

    12. strftime(...)

    strftime(format[, tuple]) -> string
    根据指定的时间格式将时间元组转换成字符串。如果不指定时间元组,则默认使用localtime。
    
    例如:
    import time
    t_time=time.localtime()    # t_time = time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=13, tm_min=2, tm_sec=3, tm_wday=4, tm_yday=19, tm_isdst=0)
    time.sleep(5)
    print(time.strftime('%Y-%m-%d %H:%M:%S',t_time))   #输出 2018-01-19 13:02:03
    
    常用格式码:
        %Y  以十进制数字表示的年 例如2018.
        %m  十进制表示的月 [01,12].
        %d  十进制表示的天 [01,31].
        %H  十进制表示的小时 [00,23].
        %M  十进制表示的分钟 [00,59].
        %S  十进制表示的秒  [00,61].
        %z  相对UTC的偏移量;如果东区为+,西区为-;例如东八区 +0800.
        %a  本地时区当前的工作日缩写,即星期;例如:星期五 Fri.
        %A  本地时区当前的工作日全写,即星期;例如:星期五 Friday.
        %b  本地时区当前的月份缩写,即月份;例如:一月 Jan.
        %B  本地时区当前的月份全写,即月份;例如:一月 January.
        %c  本地的当前时间,字符串格式;例如: Fri Jan 19 13:17:50 2018.
        %I  以十进制数字表示小时,12小时制 [01,12].
        %p  上午或下午,例如 AM or PM.
    
        %j  一年中的第几天,十进制数[001,366]。
        %U  一年中的第几周,十进制数[00,53]。星期日作为一周的第一天;在一年的第一个星期日前的几天,都认为在第0周;
        %w  一周中的第几天,十进制数[0,6];星期日为0
        %W  一年中的第几周,十进制数[00,53]。星期一作为一周的第一天;在一年的第一个星期一前的几天,都认为在第0周;
        %x  本地时间的年月日的适当表示形式,字符串格式;例如:01/19/18   2018年1月19日。
        %X  本地时间的时间适当表示形式,字符串格式;例如:13:54:42
        %y  两位数字表示年份,没有世纪号;十进制数;[00,99]
        %Z  时区名称(如果没有时区,则没有字符)。
        %%  %字符
    

    13. strptime(...)

    strptime(string, format) -> struct_time
    
    根据指定的格式和字符串时间,把时间转换为结构化时间(元组形式);两个参数必须指定;
    
    例如:
    import time
    str_time="2018-01-19 13:02:03"
    print(time.strptime(str_time,'%Y-%m-%d %H:%M:%S'))   # 输出 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=13, tm_min=23, tm_sec=9, tm_wday=4, tm_yday=19, tm_isdst=-1)
    

    常用格式码:和上面一样。

    14. time(...)

    time() -> floating point number
    从纪元开始以秒为单位返回当前时间;即时间戳;如果系统支持,则可能返回浮点数,即更精确;
    

    三、补充一点datetime模块

    import datetime
    now_time=datetime.datetime.now()
    print(now_time)               # 输出 2018-01-19 15:21:28.702212   
    

    平时我们也可以用这个取时间。

    datetime
    
    ####### 获取当前的日期和时间
    from datetime import datetime
    
    now_time=datetime.now()
    print(now_time)                        # 2015-05-18 16:28:07.198690
    
    
    ####### 获取指定日期和时间
    from datetime import datetime
    dt = datetime(2015, 4, 19, 12, 20)     # 用指定日期时间创建datetime
    print(dt)                            # 2015-04-19 12:20:00
    
    
    ####### 将时间转换为时间戳
    from datetime import datetime
    dt = datetime(2015, 4, 19, 12, 20)     # 用指定日期时间创建datetime
    dt.timestamp()                         # 把datetime转换为timestamp   1429417200.0
    
    
    ####### 将时间戳转换为时间
    from datetime import datetime
    t = 1429417200.0
    print(datetime.fromtimestamp(t))    # 2015-04-19 12:20:00
    
    
    ####### 将字符串转换为时间
    from datetime import datetime
    cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
    print(cday)                        # 2015-06-01 18:19:59
    
    
    ####### 将时间转换为字符串
    from datetime import datetime
    now = datetime.now()
    print(now.strftime('%a, %b %d %H:%M'))    # Mon, May 05 16:28
    
    
    ####### 时间的加减
    from datetime import datetime, timedelta
    now = datetime.now()
    print(now)                            # 10小时后的日期。输出 datetime.datetime(2015, 5, 18, 16, 57, 3, 540997)的结果
    now + timedelta(hours=10)             # 输出 datetime.datetime(2015, 5, 19, 2, 57, 3, 540997)的结果
    now - timedelta(days=1)               # 1day前的时间。输出 datetime.datetime(2015, 5, 17, 16, 57, 3, 540997)的结果
    now + timedelta(days=2, hours=12)     # 2天12小时后的日期。输出 datetime.datetime(2015, 5, 21, 4, 57, 3, 540997)的结果
    如需转载,请注明出处,否则本人会追究法律责任!
  • 相关阅读:
    还来一篇说下json_value 以及 json_query 的应用 (3)
    继续说一下openjson 以及 json path 的使用 (2)
    浅谈数据库资源使用的按需分配方法
    AlwaysON同步的原理及可用模式
    AlwaysON同步性能监控的三板斧
    为什么完整备份不能截断事务日志
    解读SQL 内存数据库的细节
    收缩SQL Server日志不是那么简单的(翻译)
    没有了SA密码,无法Windows集成身份登录,DBA怎么办?
    数据库错误日志惹的祸
  • 原文地址:https://www.cnblogs.com/hacker001/p/10094764.html
Copyright © 2011-2022 走看看