python中最常用的三个处理时间的库:time、datetime、calendar

 

本文主要讲解 time 的用法。

 

先上目录

一、time模块的作用

二、time模块表示时间的四种方式

三、四种表示时间的方式之间的转换图

四、time模块一些常用api的用法

 

一、time模块的作用

时间获取、表达和转换。

 

二、time模块表示时间的四种方式

时间戳(timestamp)的表现形式:

1581838663.752684

 

时间对象(struct_time)表现形式 :

time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)

 

默认时间字符串(defaut_time)表示形式:

'Feb 16 2020 07:42:38'

 

自定义时间字符串(format_time)表示形式:

'2020-02-16 17:37:28'

 

接下来,详细讲解这四种时间表示方式

(1)timestamp时间戳表现形式

生成时间戳的例子:

time.time()

 

(2)struct_time时间对象表现形式 

生成时间对象的例子:

time.strptime("30 Nov 00", "%d %b %y") 

 

(3)format_string自定义时间字符串表现形式 

生成自定义时间字符串的例子:

time.strftime('%b %d %Y %H:%M:%S', time.gmtime(time.time()))

 

(4)defaut_string默认时间字符串表现形式 

生成默认时间字符串的例子:

time.asctime()

默认以 %a %b %d %H:%M:%S %Y 形式展示

 

三、四种表示时间的方式之间的转换图

format_stringstruct_timetimestamp的互相转换如下图所示:

 

defaut_timestruct_timetimestamp的相互转换如下图所示:

 

四、time模块一些常用api的用法

1)time.asctime(t)

说明:

接受时间元组并返回 默认时间字符串(defaut_time)的形式, t 代表元组(下面的内容不再做此说明)

形如:"Sun Jun 20 23:21:05 1993" (1993年6月20日 周日 23时21分05秒)

例子:

 

注意,传入的时间元组的格式是:

t = (tm_year, tm_mon, tm_mday, 
     tm_hour, tm_min, tm_sec,
     tm_wday, tm_yday, tm_isdst) 

 

以下是参数对照表:

指数

属性

价值观

0

tm_year

(例如,1993年)

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]; 见(2)中 strftime()描述

6

tm_wday

范围[0,6],星期一为0

7

tm_yday

范围[1,366]

8

tm_isdst

0、1或-1;见下文

不适用

tm_zone

时区名称的缩写

不适用

tm_gmtoff

以秒为单位偏移UTC以东

 

(2)time.time()

说明:返回当前时间的时间戳(1970纪元后经过的浮点秒数)

例子:

 

 

(3)time.sleep(secs)

说明:推迟调用线程的运行,secs指秒数。

例子:

 

(4)time.ctime(secs)

说明:作用相当于asctime(localtime(secs)),未给参数相当于asctime()

例子:

 

(5)time.localtime([secs]

说明:

不传入参数的话,返回当前时间的时间对象(struct_time);

传入时间戳参数的话,返回指定时间时间对象。

例子:

 

(6)time.strftime(format, t) 

说明:

接收以时间对象(struct_time),并返回以自定义字符串所表示的当地时间,格式由 format 决定。

 

例子:

一般习惯格式化成:%Y-%m-%d %H:%M:%S

 

拓展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 当前时区的名称

%% %号本身


(7)time.strptime(string, format)

说明:根据 format 的格式把一个时间字符串解析为时间元组。

例子:

 

(8)time.mktime(string, format)

说明:接受时间对象并返回时间戳(1970纪元后经过的浮点秒数)。

例子:

 

(9)time.gmtime([secs])

说明:接收时间戳并返回时间对象

例子:

 

(10)time.process_time() 

说明:返回当前进程执行 CPU 的时间总和,不包含睡眠时间。

例子:

 

(11)time.perf_counter() 

说明:返回计时器的精准时间(系统的运行时间),包含整个系统的睡眠时间。

例子:

 

(10)和(11)常常用来计算程序的执行耗时。

 

假如说,你平时用的是 jupyter,还有一个更简单的方式计算程序执行耗时。

 

那就是 %timeit

 

例子:

 

是不是特别方便呢?

 

总结一下

比较常用的api有

time.time() 获取当前时间戳
time.localtime() 获取当前时间对象
time.gmtime() 时间戳转时间对象
time.mktime() 时间对象转时间戳
time.strftime() 时间对象转自定义时间字符串

time.strptime()

自定义时间字符串转时间对象
time.sleep() 延时

 

关于作者

github:https://github.com/GitDzreal93/dev-tester
微信公众号:测试开发guide