time模块
time
模块在 python
中共有三种表示方式:
timestamp
tuple
或struct_time
- 格式化字符串
基本概念
- 时间戳:表示从1970年1月1日00:00:00开始按秒计算的偏移量
- UTC(Coordinated Universal Time):世界协调时,也称格林威治时间(GMT)
- DST(Daylight Saving Time):即夏令时
- struct_time为9元组:
tm_year :年
tm_mon :月(1-12)
tm_mday :日(1-31)
tm_hour :时(0-23)
tm_min :分(0-59)
tm_sec :秒(0-59)
tm_wday :星期几(0-6,0表示周日)
tm_yday :一年中的第几天(1-366)
tm_isdst :是否是夏令时(默认为-1)
常用函数
time.sleep(secs)
:挂起调用线程secs
秒。time.clock()
: 在第一次调用的时候, 返回程序运行的时间. 第二次之后返回与之前的间隔.
import time
if __name__ == '__main__':
time.sleep(1)
print "clock1:%s" % time.clock()
time.sleep(1)
print "clock2:%s" % time.clock()
time.sleep(1)
print "clock3:%s" % time.clock()
结果为:
clock1:3.7758161993087234e-07
clock2:1.000387021160429
clock3:2.0012350694787937
time.localtime([secs])
:将一个时间戳转换为当前时区的struct_time
,若secs
参数未提供,则以当前时间为准。
>>>time.localtime()
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=25, tm_hour=15, tm_min=45, tm_sec=9, tm_wday=3, tm_yday=25, tm_isdst=0)
time.gtime([secs])
:将一个时间戳转换为UTC时区(0时区)的struct_time
。
>>>time.gtime(time.time())
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=25, tm_hour=7, tm_min=46, tm_sec=8, tm_wday=3, tm_yday=25, tm_isdst=0)
time.time()
:返回当前时间的时间戳。
>>>time.time()
1516866368.0622864
time.mktime(t)
:将一个struct_time
转化为时间戳。
>>>time.mktime(time.localtime())
1516866506.0
time.asctime([t])
:把一个表示时间的tuple
或者struct_time
表示为这种形式:'Sun Jun 20 23:21:05 1993'。如果没有参数,将会将time.localtime()
作为参数传入
>>>time.asctime(time.localtime())
Thu Jan 25 15:49:57 2018
time.ctime([secs])
:把一个时间戳(按秒计算的浮点数)转化为time.asctime()
的形式。如果参数未给或者为None
的时候,将会默认time.time()
为参数。它的作用相当于time.asctime(time.localtime(secs))
。
>>>time.ctime()
Thu Jan 25 15:49:57 2018
time.strftime(format[, t])
:把一个代表时间的tuple
或者struct_time
转化为格式化的时间字符串。如果t
未指定,将传入time.localtime()
。如果元组中任何一个元素越界,会抛出ValueError
。
>>>time.strftime("%Y-%m-%d %X", time.localtime())
2018-01-25 15:52:09
格式 | 含义 | 备注 |
---|---|---|
%a | 本地简化星期名称 | |
%A | 本地完整星期名称 | |
%b | 本地简化月份名称 | |
%B | 本地完整月份名称 | |
%c | 本地相应的日期和时间表示 | |
%d | 一月中的第几天(01-31) | |
%H | 一天中的第几个小时(24小时制,00-23) | |
%I | 一天中的第几个小时(12小时制,01-12) | |
%j | 一年中的第几天(001,366) | |
%m | 月份(01-12) | |
%p | 本地am或者pm的相应符 | 需要与%I配合 |
%M | 分钟数(00-59) | |
%S | 秒(01-61) | 闰年秒占2秒 |
%U | 一年中的星期数,以星期日作为一个星期的开始 | |
%w | 一个星期中的第几天(0-6,0是星期天) | |
%W | 一年中的星期数,以星期一作为一个星期的开始 | |
%x | 本地相应日期 | |
%X | 本地相应时间 | |
%y | 去掉世纪的年份 | |
%Y | 完整的年份 | |
%Z | 时区的名字 | |
%% | '%'字符 |
常用的有:
%y 两位数的年份 00 ~ 99.
%Y 四位数的年份 0000 ~ 9999
%m 月份 01 ~ 12.
%d day 01 ~ 31.
%H 时 00 ~ 23.
%I 时 01 ~ 12.
%M 分 00 ~ 59.
%S 秒 00 ~ 61.
time.strptime(string[, format])
:把一个格式化时间字符串转化为struct_time
。实际上它和strftime()
是逆操作。
>>>time.strptime('2018-01-25 15:54:06', '%Y-%m-%d %X')
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=25, tm_hour=15, tm_min=54, tm_sec=6, tm_wday=3, tm_yday=25, tm_isdst=-1)
总结
可以得到时间戳的函数有:time.time(),time.mktime(),
可以得到struct_time的函数有:time.gtime(),time.localtime(),time.strptime()
可以得到格式化字符串的函数有:time.strftime(),time.ctime(),time.asctime()
各个函数的转化关系为:
参考资料:
http://blog.csdn.net/you_are_my_dream/article/details/61616465
https://docs.python.org/3/library/time.html
http://www.jb51.net/article/87721.htm