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.  
  • 相关阅读:
    给jquery 添加触屏事件,上下左右 touchwipe插件
    node.js 安装运行
    CSS3 3D 盒子模型
    javascript 获取内联样式
    HTML5 离线存储应用案例
    swipe.js 轻松实现手机端滑动效果
    手机网页轮播切换,简易版
    多行文字垂直居中
    jquery实现简单轮播
    利用media query写响应式布局
  • 原文地址:https://www.cnblogs.com/skeeter/p/3496994.html
Copyright © 2011-2022 走看看