• 日期和时间模块


    摘自:http://my.oschina.net/935572630/blog/397557

    http://www.runoob.com/python/python-date-time.html

    精确到微秒和毫秒的时间:

    >>> datetime.datetime.now()
    datetime.datetime(2016, 12, 30, 10, 25, 14, 171000)
    >>> datetime.datetime.now().microsecond
    723000
    >>> datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') #精确到微妙
    '2016-12-30 10:25:41.003000'
    >>> datetime.datetime.now().strftime('%Y%m%d%H%M%S%f') #精确的到微妙
    '20161230102610409000'
    >>> datetime.datetime.now().strftime('%Y%m%d%H%M%S')+str(datetime.datetime.now().microsecond) #精确到微妙
    '20161230102705889000'
    >>> datetime.datetime.now().strftime('%Y%m%d%H%M%S')+str(datetime.datetime.now().microsecond/1000) #精确到毫秒,1毫秒=1000微妙
    '20161230103045401'

    date类

        date类表示一个日期。日期由年、月、日组成(地球人都知道~~)。date类的构造函数如下:

        class datetime.date(year, month, day):

    date.today():返回一个表示当前本地日期的date对象;

    # date.today(): 2010-04-06

    date.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;

    data.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;

    date.strftime(fmt):自定义格式化字符串。在下面详细讲解。

    Time类

        time类表示时间,由时、分、秒以及微秒组成。(我不是从火星来的~~)time类的构造函数如下:

        class datetime.time(hour[, minute[, second[, microsecond[, tzinfo]]]]) :各参数的意义不作解释,这里留意一下参数tzinfo,它表示时区信息。注意一下各参数的取值范围:hour的范围为[0, 24),minute的范围为[0, 60),second的范围为[0, 60),microsecond的范围为[0, 1000000)。

        time类定义的类属性:

    • time.min、time.max:time类所能表示的最小、最大时间。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);

    • time.resolution:时间的最小单位,这里是1微秒;

        time类提供的实例方法和属性:

    • time.hour、time.minute、time.second、time.microsecond:时、分、秒、微秒;

    • time.tzinfo:时区信息;

    • time.replace([hour[, minute[, second[, microsecond[, tzinfo]]]]]):创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变);

    • time.isoformat():返回型如"HH:MM:SS"格式的字符串表示;

    • time.strftime(fmt):返回自定义格式化字符串。在下面详细介绍;

    • 你可以试下下面的方式来取得当前时间的时间戳:
      import time
      print time.time()
      输出的结果是:
      1279578704.6725271

      但是这样是一连串的数字不是我们想要的结果,我们可以利用time模块的格式化时间的方法来处理:
      time.localtime(time.time())
      用time.localtime()方法,作用是格式化时间戳为本地的时间。
      输出的结果是:
      time.struct_time(tm_year=2010, tm_mon=7, tm_mday=19, tm_hour=22, tm_min=33, tm_sec=39, tm_wday=0, tm_yday=200, tm_isdst=0)

      现在看起来更有希望格式成我们想要的时间了。
      time.strftime('%Y-%m-%d',time.localtime(time.time()))

      最后用time.strftime()方法,把刚才的一大串信息格式化成我们想要的东西,现在的结果是:
      2010-07-19

      time.strftime里面有很多参数,可以让你能够更随意的输出自己想要的东西:
      下面是time.strftime的参数:
      strftime(format[, tuple]) -> string
      将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出

    例如:time.strftime('%H%M%S',time.localtime()):113818

    datetime类

        datetime是date与time的结合体,包括date与time的所有信息。它的构造函数如下:datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]),各参数的含义与date、time的构造函数中的一样,要注意参数值的范围。

        datetime类定义的类属性与方法:

    datetime.today():返回一个表示当前本地时间的datetime对象;

    # today(): 2010-04-07 09:48:16.234000

    datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;

    datetime.strptime(date_string, format):将格式字符串转换为datetime对象

    • datetime.year、month、day、hour、minute、second、microsecond、tzinfo:

    • datetime.date():获取date对象;

    • datetime.time():获取time对象;

    格式字符串

        datetime、date、time都提供了strftime()方法,该方法接收一个格式字符串,输出日期时间的字符串表示。

    python中时间日期格式化符号:

    • %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)
    • %f 微秒(转变为毫秒的话,需除以1000)
    • %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 当前时区的名称
    • %% %号本身

    例子:

    ${now_hour}    Get Time    hour        
    ${now_min}    Get Time    min        
    ${now_sec}    Get Time    sec        
    ${time}    evaluate    time.time()    time    
    ${time-}    evaluate    time.localtime()    time    
    ${delta}    Set Variable    50        
    ${time2}    evaluate    time.localtime(time.time())    time    #同time.localtime()
    ${formattime2}    evaluate    time.strftime('%H%M%S',time.localtime())    time    
    ${time2+}    evaluate    time.localtime(time.time()+${delta})    time    
    ${formattime2+}    evaluate    time.strftime('%H%M%S',time.localtime(time.time()+${delta}))    time    
    ${formattime2++}    evaluate    time.strftime('%H%M%S',time.localtime(+${delta}))    time   

    Starting test: 测试使用.Suite.case
    20160728 14:33:56.221 :  INFO : ${now_hour} = 14
    20160728 14:33:56.221 :  INFO : ${now_min} = 33
    20160728 14:33:56.221 :  INFO : ${now_sec} = 56
    20160728 14:33:56.237 :  INFO : ${time} = 1469687636.24
    20160728 14:33:56.237 :  INFO : ${time-} = time.struct_time(tm_year=2016, tm_mon=7, tm_mday=28, tm_hour=14, tm_min=33, tm_sec=56, tm_wday=3, tm_yday=210, tm_isdst=0)
    20160728 14:33:56.237 :  INFO : ${delta} = 50
    20160728 14:33:56.237 :  INFO : ${time2} = time.struct_time(tm_year=2016, tm_mon=7, tm_mday=28, tm_hour=14, tm_min=33, tm_sec=56, tm_wday=3, tm_yday=210, tm_isdst=0)
    20160728 14:33:56.237 :  INFO : ${formattime2} = 143356
    20160728 14:33:56.253 :  INFO : ${time2+} = time.struct_time(tm_year=2016, tm_mon=7, tm_mday=28, tm_hour=14, tm_min=34, tm_sec=46, tm_wday=3, tm_yday=210, tm_isdst=0)
    20160728 14:33:56.253 :  INFO : ${formattime2+} = 143446
    20160728 14:33:56.253 :  INFO : ${formattime2++} = 080050
    Ending test:   测试使用.Suite.case

     

    [python] view plaincopy

        1. dt = datetime.now()  

        2. print '(%Y-%m-%d %H:%M:%S %f): ', dt.strftime('%Y-%m-%d %H:%M:%S %f')  

        3. print '(%Y-%m-%d %H:%M:%S %p): ', dt.strftime('%y-%m-%d %I:%M:%S %p')  

        4. print '%%a: %s ' % dt.strftime('%a')  

        5. print '%%A: %s ' % dt.strftime('%A')  

        6. print '%%b: %s ' % dt.strftime('%b')  

        7. print '%%B: %s ' % dt.strftime('%B')  

        8. print '日期时间%%c: %s ' % dt.strftime('%c')  

        9. print '日期%%x:%s ' % dt.strftime('%x')  

        10. print '时间%%X:%s ' % dt.strftime('%X')  

        11. print '今天是这周的第%s天 ' % dt.strftime('%w')  

        12. print '今天是今年的第%s天 ' % dt.strftime('%j')  

        13. print '今周是今年的第%s周 ' % dt.strftime('%U')  

        14.   

        15. # # ---- 结果 ----  

        16. # (%Y-%m-%d %H:%M:%S %f):  2010-04-07 10:52:18 937000  

        17. # (%Y-%m-%d %H:%M:%S %p):  10-04-07 10:52:18 AM  

        18. # %a: Wed   

        19. # %A: Wednesday   

        20. # %b: Apr   

        21. # %B: April   

        22. # 日期时间%c: 04/07/10 10:52:18   

        23. # 日期%x:04/07/10   

        24. # 时间%X:10:52:18   

        25. # 今天是这周的第3天   

        26. # 今天是今年的第097天   

        27. # 今周是今年的第14周 

    >>> import datetime,time
    >>> a=datetime.timedelta(days=2,hours=6)
    >>> a
    datetime.timedelta(2, 21600)
    >>> b=datetime.timedelta(hours=4.5)
    >>> b
    datetime.timedelta(0, 16200)
    >>> c=a+b
    >>> c
    datetime.timedelta(2, 37800)
    >>> c.days
    2
    >>> c.seconds
    37800
    >>> c.seconds/3600
    10
    >>> c.seconds/3600.0
    10.5
    >>> c.total_seconds()/3600
    58.5
    >>> #创建表示特定的日期和时间
    >>> a=datetime.datetime(2012,9,23)
    >>> a
    datetime.datetime(2012, 9, 23, 0, 0)
    >>> print(a+datetime.timedelta(days=10))
    2012-10-03 00:00:00
    >>> b=datetime.datetime(2012,12,21)
    >>> b
    datetime.datetime(2012, 12, 21, 0, 0)
    >>> d=b-a
    >>> d.days
    89
    >>> print(b+datetime.timedelta(days=20))
    2013-01-10 00:00:00
    >>> print(b+datetime.timedelta(months=2))
    
    Traceback (most recent call last):
      File "<pyshell#38>", line 1, in <module>
        print(b+datetime.timedelta(months=2))
    TypeError: 'months' is an invalid keyword argument for this function
    >>> now=datetime.datetime.today()
    >>> now
    datetime.datetime(2016, 8, 26, 11, 3, 31, 867000)
    >>> print now+datetime.timedelta(minutes=10)
    2016-08-26 11:13:31.867000
    >>> #当执行计算时,应该注意datetime模块是可正确处理闰年的
    >>> b=datetime.datetime(2012,3,1)
    >>> a=datetime.datetime(2012,2,28)
    >>> a
    datetime.datetime(2012, 2, 28, 0, 0)
    >>> b
    datetime.datetime(2012, 3, 1, 0, 0)
    >>> b-a
    datetime.timedelta(2)
    >>> c=b-a
    >>> c
    datetime.timedelta(2)
    >>> c.days
    2
    >>> d=datetime.datetime(2013,3,1)
    >>> e=datetime.datetime(2013,2,28)
    >>> (d-e).days
    1
    >>> #对于处理一些月份相关的问题,dateutil可以填补一些datetime模块留下的空白(可正确处理不同月份中的天数)
    >>> a=datetime.datetime(2012,9,23)
    >>> a+datetime.timedelta(months=1)
    
    Traceback (most recent call last):
      File "<pyshell#58>", line 1, in <module>
        a+datetime.timedelta(months=1)
    TypeError: 'months' is an invalid keyword argument for this function
  • 相关阅读:
    JVM Inline
    Lattice
    编译技术
    sql-server-on-linux
    concurrency 方面的books
    Linux debugger lldb
    javaperformanceoptimization
    Understanding The Linux Virtual Memory Manager
    web performance tu ning
    linux io architecture
  • 原文地址:https://www.cnblogs.com/apple2016/p/5545971.html
Copyright © 2020-2023  润新知