time模块
time模块
time模块在 python中共有三种表示方式:
timestamptuple或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

浙公网安备 33010602011771号