zoukankan      html  css  js  c++  java
  • Python中处理时间 —— time模块

    time模块

    time 模块可用来处理时间,详细的说明参考 time模块说明

    逝去的秒数

    逝去的秒数表示从某个时间(Python中是“Thu Jan 1 07:00:00 1970”)开始到现在所经过的秒数。

    使用 time.time() 函数可以获得逝去的秒数:

    >>time.time()
    1388330058.8643
    

    time.time()返回一个浮点数,可用于计算,比较,存储时间时间。

    输出可读性强的时间字符串

    要输出像“Thu Jan 1 07:00:00 1970”这种可读性强的时间字符串,我们可以使用 time.ctime() 函数,默认返回当前的时间:

    >>> time.ctime()
    'Sun Dec 29 23:17:44 2013'
    

    也可以传入一个逝去的秒数,返回对应的时间字符串:

    >>> time.ctime(0)
    'Thu Jan  1 07:00:00 1970'
    

    获取时间的各个部分信息

    我们经常要分别获取一个时间的年、月、日、时、分、秒等信息,time模块定义了一个 struct_time 类型,用来存储时间的各个部分信息。该类型实现了元组协议,所以可以当作元组使用。

    struct_time 的结构如下:

    Index Attribute Values
    0 tm_year (for example, 1993)
    1 tm_mon range [1, 12]
    2 tm_mday range [1, 31]
    3 tm_hour range [0, 23]
    4 tm_min range [0, 59]
    5 tm_sec range [0, 61]; see (2) in strftime() description
    6 tm_wday range [0, 6], Monday is 0
    7 tm_yday range [1, 366]
    8 tm_isdst 0, 1 or -1; see below

    有几个函数都可以返回struct_time, gmtime() 返回当前的UTC时间,localtime() 返回当前时间域的当前时间:

    >>> time.gmtime()
    time.struct_time(tm_year=2013, tm_mon=12, tm_mday=29, tm_hour=15, tm_min=35, tm_sec=57, tm_wday=6, tm_yday=363, tm_isdst=0)
    >>> time.localtime()
    time.struct_time(tm_year=2013, tm_mon=12, tm_mday=29, tm_hour=23, tm_min=36, tm_sec=6, tm_wday=6, tm_yday=363, tm_isdst=0)
    

    gmtime() 和 localtime() 也接受一个逝去的秒数作为参数,并转换成struct_time:

    >>> time.localtime(0)
    time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=7, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
    

    mktime() 接收 struct_time 参数并将其转化为逝去的秒数:

    >>> time.mktime(time.localtime())
    1388331386.0
    

    解析和格式化时间

    如何将类似”Sun Dec 29 23:17:44 2013“的字符串解析成 struct_time?

    time模块提供了两个函数来处理这方面的工作。 函数 strptime() 用于将时间字符串解析成 struct_time, 函数 strftime() 则将 struct_time 格式化成可读性强的时间字符串

    import time
    
    now = time.ctime()
    print now
    parsed = time.strptime(now)
    print parsed
    print time.strftime("%a %b %d %H:%M:%S %Y", parsed)
    
    # output =>
    # Sun Mar  9 13:01:19 2008
    # (2008, 3, 9, 13, 1, 19, 6, 69, -1)
    # Sun Mar 09 13:01:19 2008
    

    这两个函数都依赖特定的格式说明信息,默认的格式说明为”%a %b %d %H:%M:%S %Y“。完整的格式列表可以在 这里 找到。

    Directive Meaning Notes
    %a Locale’s abbreviated weekday name.  
    %A Locale’s full weekday name.  
    %b Locale’s abbreviated month name.  
    %B Locale’s full month name.  
    %c Locale’s appropriate date and time representation.  
    %d Day of the month as a decimal number [01,31].  
    %H Hour (24-hour clock) as a decimal number [00,23].  
    %I Hour (12-hour clock) as a decimal number [01,12].  
    %j Day of the year as a decimal number [001,366].  
    %m Month as a decimal number [01,12].  
    %M Minute as a decimal number [00,59].  
    %p Locale’s equivalent of either AM or PM. (1)
    %S Second as a decimal number [00,61]. (2)
    %U Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0. (3)
    %w Weekday as a decimal number [0(Sunday),6].  
    %W Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0. (3)
    %x Locale’s appropriate date representation.  
    %X Locale’s appropriate time representation.  
    %y Year without century as a decimal number [00,99].  
    %Y Year with century as a decimal number.  
    %Z Time zone name (no characters if no time zone exists).  
    %% A literal '%' character.  
  • 相关阅读:
    Codeforces 992C(数学)
    Codeforces 990C (思维)
    Codeforces 989C (构造)
    POJ 1511 Invitation Cards(链式前向星,dij,反向建边)
    Codeforces 1335E2 Three Blocks Palindrome (hard version)(暴力)
    POJ 3273 Monthly Expense(二分)
    POJ 2566 Bound Found(尺取前缀和)
    POJ 1321 棋盘问题(dfs)
    HDU 1506 Largest Rectangle in a Histogram(单调栈)
    POJ 2823 Sliding Window(单调队列)
  • 原文地址:https://www.cnblogs.com/skeeter/p/3496994.html
Copyright © 2011-2022 走看看