python time模块

Python 日期和时间

Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。

时间间隔是以秒为单位的浮点小数。每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。

Python 的 time 模块下有很多函数可以转换常见日期格式。如函数time.time()用于获取当前时间戳。

时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。

什么是时间元组?

struct_time元组具有如下属性:

序号属性
0 tm_year 2017
1 tm_mon 1 到 12
2 tm_mday 1 到 31
3 tm_hour 0 到 23
4 tm_min 0 到 59
5 tm_sec 0 到 61 (60或61 是闰秒)
6 tm_wday 0到6 (0是周一)
7 tm_yday 1 到 366(儒略历)
8 tm_isdst -1, 0, 1, -1是决定是否为夏令时的旗帜
 

获取当前时间

从返回浮点数的时间辍方式向时间元组转换,只要将浮点数传递给如localtime之类的函数。

import time

localtime = time.localtime(time.time())
print(localtime)

>>> time.struct_time(tm_year
=2017, tm_mon=2, tm_mday=18, tm_hour=16, tm_min=4, tm_sec=57, tm_wday=5, tm_yday=49, tm_isdst=0)

 日期时间格式化

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%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 当前时区的名称
    %% %号本身

Time 模块函数

Time 模块包含了以下内置函数,既有时间处理相的,也有转换时间格式的:

 

序号函数及描述
1 time.altzone
返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。
2 time.asctime([tupletime])
接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。
3 time.clock( )
用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。
4 time.ctime([secs])
作用相当于asctime(localtime(secs)),未给参数相当于asctime()
5 time.gmtime([secs])
接收时间辍(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组t。注:t.tm_isdst始终为0
6 time.localtime([secs])
接收时间辍(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取0或1,取决于当地当时是不是夏令时)。
7 time.mktime(tupletime)
接受时间元组并返回时间辍(1970纪元后经过的浮点秒数)。
8 time.sleep(secs)
推迟调用线程的运行,secs指秒数。
9 time.strftime(fmt[,tupletime])
接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。
10 time.strptime(str,fmt='%a %b %d %H:%M:%S %Y')
根据fmt的格式把一个时间字符串解析为时间元组。
11 time.time( )
返回当前时间的时间戳(1970纪元后经过的浮点秒数)。
12 time.tzset()
根据环境变量TZ重新初始化时间相关设置。

 

实际应用-

   1.将字符串的时间转换为时间戳
        方法:
        a = "2013-10-10 23:40:00"
        将其转换为时间数组
        timeArray = time.strptime(a, "%Y-%m-%d %H:%M:%S")
        转换为时间戳:
        timeStamp = int(time.mktime(timeArray))
        timeStamp == 1381419600

    2.字符串格式更改
        如a = "2013-10-10 23:40:00",想改为 a = "2013/10/10 23:40:00"
        方法:先转换为时间数组,然后转换为其他格式
        timeArray = time.strptime(a, "%Y-%m-%d %H:%M:%S")
        otherStyleTime = time.strftime("%Y/%m/%d %H:%M:%S", timeArray)

    3.时间戳转换为指定格式日期:
        方法一:
            利用localtime()转换为时间数组,然后格式化为需要的格式,如
            timeStamp = 1381419600
            timeArray = time.localtime(timeStamp)
            otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
            otherStyletime == "2013-10-10 23:40:00"

        方法二:
            import datetime
            timeStamp = 1381419600
            dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
            otherStyleTime = dateArray.strftime("%Y-%m-%d %H:%M:%S")
            otherStyletime == "2013-10-10 23:40:00"

    4.获取当前时间并转换为指定日期格式
        方法一:
            获得当前时间时间戳
            now = int(time.time())  ->这是时间戳
            转换为其他日期格式,如:"%Y-%m-%d %H:%M:%S"
            timeArray = time.localtime(timeStamp)
            otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)

        方法二:
            import datetime
            获得当前时间
            now = datetime.datetime.now()  ->这是时间数组格式
            转换为指定的格式:
            otherStyleTime = now.strftime("%Y-%m-%d %H:%M:%S")

    5.获得三天前的时间
        方法:
            import time
            import datetime
            先获得时间数组格式的日期
            threeDayAgo = (datetime.datetime.now() - datetime.timedelta(days = 3))
            转换为时间戳:
                timeStamp = int(time.mktime(threeDayAgo.timetuple()))
            转换为其他字符串格式:
                otherStyleTime = threeDayAgo.strftime("%Y-%m-%d %H:%M:%S")
        注:timedelta()的参数有:days,hours,seconds,microseconds

    6.给定时间戳,计算该时间的几天前时间:
        timeStamp = 1381419600
        先转换为datetime
        import datetime
        import time
        dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
        threeDayAgo = dateArray - datetime.timedelta(days = 3)
        参考5,可以转换为其他的任意格式了

 

时间转换 大杀器

 





 
posted @ 2016-11-15 22:39  Vincen_shen  阅读(202)  评论(0)    收藏  举报