在python中,与时间处理有关的模块包括:time、datetime以及calendar。这篇主要讲解time。
1、时间表示形式
python中,通常有三种方式表示时间:时间戳(timestamp)、元组(struct_time)、格式化的时间字符串(Format String)。由于python中的time模块实现主要是调用C库,所以各个平台可能有所不同。
UTC时间协调时即格林威治天文时间,世界标准时间。中国为UTC+8。DST即夏令时。
1.1、时间戳
通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回的是float类型。
1.2、格式化时间字符串
特定格式的时间字符串,如‘1988-03-16’。python中时间日期格式化符号如下:
格式 | 含义 |
%a | 本地简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化月份名称 |
%B | 本地完整月份名称 |
%c | 本地相应的日期和时间 |
%d | 一个月中的第几天(01-31) |
%H | 24小时制小时数,00-23 |
%I | 12小时制小时数 |
%j | 本地简化星期名称 |
%m | 本地完整星期名称 |
%M | 本地完整月份名称 |
%p | 本地am或者pm的相应符 |
%S | 秒(01 - 61) |
%U | 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周 |
%w | 一个星期中的第几天(0 - 6,0是星期天) |
%W | 和%U基本相同,不同的是%W以星期一为一个星期的开始。 |
%x | 本地相应日期 |
%X | 本地相应时间 |
%y | 去掉世纪的年份(00 - 99) |
%Y | 完整的年份 |
%Z | 时区的名字(如果不存在为空字符) |
%% | ‘%’字符 |
元组共有9个元素即年、月、日、时、分、秒、一周中周几、一年中第几天、是否是夏令时,下列为元组中的这九个元素: 1.3、元组
索引 | 属性 | 值 |
0 | tm_year(年) | 比如2018 |
1 | tm_mon(月) | 01-12 |
2 | tm_mday(日) | 01-31 |
3 | tm_hour(时) | 00-23 |
4 | tm_min(分) | 00-59 |
5 | tm_sec(秒) | 00-61 |
6 | tm_wday(weekday) | 0-6(0表示周日) |
7 | tm_yday(一年中的第几天) | 1-366 |
8 | t m_isdst(是否是夏令时) | 某人为-1 |
2、常用的函数
2.1、time.localtime([seconds])
将一个时间戳转换为当前时区的struct_time元组。无seconds参数,则以当前时间为准。
2.2、time.gmtime([seconds])
将一个时间戳转换为UTC时区的struct_time元组,无seconds参数,则以当前时间为准,与localtime方法类似。
2.3、time.time()
返回当前时间的时间戳。
2.4、time.mktime(tuple)
将一个struct_time转换为时间戳。
2.5、time.sleep(seconds)
线程延时的时间,单位为秒。
2.6、time.clock()
在不同系统手感含义不同。在linux系统上,它返回的是进程时间,是用秒表示的浮点数。在windows中,第一次调用,返回的是进程运行的实际时间。而第二次之后调用的就是自第一次调用以后到现在的运行时间。
2.7、time.asctime([tuple])
把一个表示时间的元组表示成:‘Sat Apr 7 13:45:44 2018 ’这样的字符串。如果无参数,则将time.localtime()作为参数传入。
2.8、time.ctime(seconds)
把一个时间戳转换为如time.asctime转换的形式即‘Sat Apr 7 13:45:44 2018 ’这样的字符串。如果无参数或者为None时,将默认time.time()为参数.即相当于time.asctime(time.localtime(seconds))。
2.9、time.strftime(format[,tuple])
将一个代表时间的元组转换为格式化的字符串。如果tuple未指定,将time.localtime()为参数。如果元组中任何一个元素越界,ValueError的错误将会抛出。格式化符号参照1.2 格式化时间字符串。
2.10、time.strptime(string[,format])
把一个格式化时间字符串转化为元组,是strftime()的逆操作。format默认格式为:‘%a %b %d %H:%M:%S %Y'。