• Python与时间相关的time、datetime模块的使用


    一、前言

    学习python处理时间相关的模块time、datetime

    二、time模块

    首先来看下time模块

    通过help(time)来看一下time模块下都有哪些函数:

        time() -- return current time in seconds since the Epoch as a float
        clock() -- return CPU time since process start as a float
        sleep() -- delay for a number of seconds given as a float
        gmtime() -- convert seconds since Epoch to UTC tuple
        localtime() -- convert seconds since Epoch to local time tuple
        asctime() -- convert time tuple to string
        ctime() -- convert time in seconds to string
        mktime() -- convert local time tuple to seconds since Epoch
        strftime() -- convert time tuple to string according to format specification
        strptime() -- parse string to time tuple according to format specification
        tzset() -- change the local timezone
    

    time表现方式有三种:

    1、时间戳(timestamp)的方式:时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。返回的是float类型,返回时间戳的函数有time()、clock()

    2、元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。下面列出这种方式元组中的几个元素:

    3、格式化字符串(format time)方式:格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。比如“2018-5-11”

    下面就说一下常用的一些函数:

    1、time.sleep()

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

    2、time.time()

    获取当前时间戳

    >>>time.time()      
    1525954582.579378
    
    3、time.clock()

    计算cpu计算所执行的时间

    >>>time.sleep(3)
    print(time.clock())
    0.061649
    
    
    4、time.gmtime()
    >>>a=time.gmtime
    print(a)
    time.struct_time(tm_year=2018, tm_mon=5, tm_mday=10, tm_hour=6, tm_min=53, tm_sec=30, tm_wday=3, tm_yday=130, tm_isdst=0)
    

    gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。,总共9个参数,其含义如上面那个表格图所示

    5、time.localtime()
    >>>a=time.localtime()
    print(a)
    time.struct_time(tm_year=2018, tm_mon=5, tm_mday=11, tm_hour=9, tm_min=22, tm_sec=14, tm_wday=4, tm_yday=131, tm_isdst=0)
    

    将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。,总共9个参数,其含义如上面那个表格图所示

    6、time.asctime([t]):

    把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。如果没有参数,将会将time.localtime()作为参数传入。

    >>>time.asctime()
    'Thu May 5 14:55:43 2011'
    

    将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。,总共9个参数,其含义如上面那个表格图所示

    7、time.ctime()
    >>>time.ctime(3600)
    print(a)
    Thu Jan  1 09:00:00 1970
    

    将时间戳转为这个形式的'Sun Jun 20 23:21:05 1993'格式化时间。如果没有参数,将会将time.localtime()作为参数传入。

    8、time.strftime(format[, t])
    >>>local_time = time.localtime()
    print(time.strftime('%Y-%m-%d  %H:%M:%S', local_time))
    2018-05-11  09:38:46
    

    把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。

    9、time.strptime(string[, format])
    >>>a=time.localtime()
    print(a)
    time.struct_time(tm_year=2018, tm_mon=5, tm_mday=11, tm_hour=9, tm_min=22, tm_sec=14, tm_wday=4, tm_yday=131, tm_isdst=0)
    

    把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。在这个函数中,format默认为:"%a %b %d %H:%M:%S %Y"。

    他们之间转换关系如下图:

    时间格式化:

    %y 两位数的年份表示(00-99)
    %Y 四位数的年份表示(000-9999)
    %m 月份(01-12)
    %d 月内中的一天(0-31)
    %H 24小时制小时数(0-23)
    %I 12小时制小时数(01-12) 
    %M 分钟数(00=59)
    %S 秒(00-59)
    %a 本地简化星期名称
    %A 本地完整星期名称
    %b 本地简化的月份名称
    %B 本地完整的月份名称
    %c 本地相应的日期表示和时间表示
    %j 年内的一天(001-366)
    %p 本地A.M.或P.M.的等价符
    %U 一年中的星期数(00-53)星期天为星期的开始
    %w 星期(0-6),星期天为星期的开始
    %W 一年中的星期数(00-53)星期一为星期的开始
    %x 本地相应的日期表示
    %X 本地相应的时间表示
    %Z 当前时区的名称
    %% %号本身
    

    三、datetime模块

    datetime内置对象关系如下:

    分为date/time/timedelta/tzinfo 四个类,其中date、tzinfo又分别有各自的子类datetim/timezone

    1、datetime.datetime.now() 获取当前时间字符串
    >>>datetime.datetime.now()
    2018-05-11 10:05:29.397237
    
    2、datetime.datetime.now().timestamp() 获取当前时间时间戳
    >>>datetime.datetime.now().timestamp()
    1526004460.797517
    
    
    3、datetime.datetime.today() 获取当前时间年月日
    >>>datetime.datetime.today()
    2018-05-11
    
    
    4、其他一些方法
    In [42]: #设置一个时间对象
    
    In [43]: d=datetime(2016,7,21,22,23,15)
    
    In [44]: #自定义格式显示
    
    In [45]: d.strftime('%x %X')
    Out[45]: '07/21/16 22:23:15'
    
    In [46]: #显示英文格式
    
    In [47]: d.ctime()
    Out[47]: 'Thu Jul 21 22:23:15 2016'
    
    In [48]: #显示日历(年,年中第几周,周几)
    
    In [49]: d.isocalendar()
    Out[49]: (2016, 29, 4)
    

    datetime子模块单位时间间隔:datetime.resolution=1微秒。

    date子模块的时间间隔为1天 date.resolution=1天

    时间间隔乘以一个数,表示间隔几天

    >>>from datetime import date
    
    #现在时间是
    
    date.today()
    datetime.date(2018, 5, 11)
    
    #100天以前的日期是
    
    result=date.today()-date.resolution*100
    print(result)
    
    输出结果:2018-01-31
    
    
  • 相关阅读:
    Groovy新手教程
    cocos2d-x v3.2 FlappyBird 各个类对象详细代码分析(6)
    开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
    病毒木马查杀第002篇:熊猫烧香之手动查杀
    Activity具体解释(生命周期、以各种方式启动Activity、状态保存,全然退出等)
    白话经典算法系列之六 高速排序 高速搞定
    UVA580-Critical Mass
    FPGA 时序问题
    SVD神秘值分解
    Java中Integer类的方法
  • 原文地址:https://www.cnblogs.com/suxianglun/p/9023270.html
Copyright © 2020-2023  润新知