Python学习笔记 time 模块
程序员文章站
2022-07-05 16:59:25
...
目录
- 简述
- 一些术语和约定
- 表示时间的方式
- 常用函数及解析
简述
time 模块用于时间的访问和转换,它提供了各种与时间相关的函数和几个类,其中常用的一个类是 struct_time。
尽管此模块始终可用,但并非所有平台上都提供所有功能。该模块中定义的大多数函数都是调用相同名称的平台C库函数。有时,这些函数的语义在平台之间会有所不同。
一些术语和约定
- 纪元(epoch):时间的起点,与平台有关,对于 Unix,纪元是对于Unix,纪元是 1970年1月1日 00:00:00(UTC)。可以通过 time.gmtime(0)了解给定平台上的纪元。
- 时间戳(Timestamp):通常来说,时间戳表示的是从1970年1月1日0时0分0秒开始到现在的秒数,不考虑闰秒。利用 time.time() 函数来获取时间戳。
- UTC:UTC是指世界标准时间(以前称为格林威治标准时间,即 GMT)。
- 时间元组(struct_time):时间元组是一种结构化的时间,它表现为一个元组(其实是一个类),共有九个元素,分别是:年, 月, 日,时,分,秒,一年中的第几周,一年中的第几天,夏令时(具体如下表)。struct_time 可以利用索引或属性名访问属性的值。
索引 | 属性 | 值 | 注释 |
---|---|---|---|
0 | tm_year | 2019 | (本年的年份) |
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表示夏令时生效,反之为0,-1表示状态未知 |
表示时间的方式
时间的表示方式有以下三种,其中计算机认识的时间只能是‘时间戳’格式,而人能看懂的则是另外两种格式
- 时间戳(timestamp)
- 结构化的时间(struct_time)
- 格式化的时间字符串(format String):利用 time.strftime() 函数来获取格式化的时间字符串,需传入表示格式的字符串(格式字符如下表)。
字符 | 含义 |
---|---|
%y | 两位数的年份表示(00-99) |
%Y | 四位数的年份表示(000-9999) |
%m | 月份(01-12) |
%d | 月内中的一天(0-31) |
%H | 24小时制小时数(00-23) |
%I | 12小时制小时数(01-12) |
%M | 分钟数(00-59) |
%S | 秒(00-59) |
%f | 以十进制数表示的毫秒(000000-999999) |
%a | 本地简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化的月份名称 |
%B | 本地完整的月份名称 |
%c | 本地相应的日期表示和时间表示 |
%j | 年内的一天(001-366) |
%p | 本地A.M.或P.M.的等价符 |
%U | 一年中的星期数(00-53)星期天为星期的开始,第一个星期日之前的日子都被视为第0周 |
%u | 以十进制数显示的 ISO 8601 星期中的日序号,其中 1 表示星期一。 |
%w | 星期(0-6),其中0表示星期日,6表示星期六 |
%W | 一年中的星期数(00-53)星期一为星期的开始,第一个星期一之前的日子都被视为第0周 |
%x | 本地相应的日期表示 |
%X | 本地相应的时间表示 |
%z | ±HHMM[SS[.ffffff]] 形式的 UTC 差值(如果对象为无知型则为空字符串) |
%Z | 当前时区的名称 |
%V | 以十进制数显示的 ISO 8601 星期,以星期一作为每周的第一天。 第 01 周为包含 1 月 4 日的星期。 |
%G | 带有世纪的 ISO 8601 年份,表示包含大部分 ISO 星期 (%V) 的年份。 |
%% | %号本身 |
三种方式的转换:
常用函数及解析
time()
功能:以小数秒为单位获取时间戳
参数:无
返回值:一个浮点数,表示纪元到现在的秒数
time_ns()
功能:与 time() 相似,但单位是纳秒
参数:无
返回值:一个整数
asctime([t])
功能:将一个表示时间的元组或 struct_time 表示为这种形式:'Sat Sep 28 16:54:12 2019'
参数:t 表示一个时间元组或一个 struct_time,若不提供该参数则默认 t = time.localtime()
返回值:固定格式化的时间字符串
ctime(secs=None)
功能:将时间戳转换为本地时间的子符串,等效于 asctime(localtime(seconds))
参数:secs 表示时间戳,默认为 None
返回值:一个字符串
gmtime([secs])
功能:将时间戳转换为UTC时区的结构化时间 struct_time
参数:secs 表示时间戳,若不提供该参数,则默认为当前时刻的时间戳
返回值:时间元组 struct_time
localtime([secs])
功能:将时间戳转换为当地的结构化时间 struct_time
参数:secs 表示时间戳,若不提供该参数,则默认为当前时刻的时间戳
返回值:时间元组 struct_time
mktime(struct_time)
功能:将结构化的时间转化为时间戳,相当于 localtime 的反函数
参数:struct_time 表示一个结构化的时间
返回值:一个时间戳
strftime(format[, struct_time])
功能:将结构化的时间转化为格式化的时间字符串
参数:format 是一个表示时间格式的字符串;struct_time 表示结构化的时间,若不提供该参数,则默认为当前时刻的结构化时间
返回值:一个时间字符串
strptime(time_str[, format])
功能:将格式化的时间字符串转化为结构化的时间
参数:time_str 表示时间字符串;format 表示时间字符串的格式,若不提供该参数,则默认其值为:'%a %b %d %H:%M:%S %Y'
返回值:结构化时间 struct_time
sleep(secs)
功能:使线程执行暂停(睡眠)给定的秒数
参数:secs 表示秒数,可以是浮点数
返回值:None
perf_counter()
功能:以小数秒为单位返回性能计数器的值,包括睡眠的时间,且是系统范围内的
参数:无
返回值:一个浮点数
perf_counter_ns()
功能:与 perf_counter() 相似,但单位是纳秒
参数:无
返回值:一个整数
process_time()
功能:以小数秒为单位返回当前进程的系统和用户 CPU 时间总和的值,不包括睡眠时间,且是进程范围内
参数:无
返回值:一个浮点数
process_time_ns()
功能:与 process_time() 相似,但单位是纳秒
参数:无
返回值:一个整数
monotonic()
功能:以小数秒为单位返回单调时钟(即不能倒退的时钟)的值
参数:无
返回值:一个浮点数
monotonic_ns()
功能:与 monotonic() 相似,但以纳秒为单位
参数:无
返回值:一个整数
thread_time()
功能:以小数秒为单位返回当前线程的系统和用户 CPU 时间之和的值,不包括睡眠时间,且特定于线程
参数:无
返回值:一个浮点数
thread_time_ns()
功能:与 thread() 相似,但单位是纳秒
参数:无
返回值:一个整数