Python之time模块

1.引言

Python 提供了一个 time模块来格式化时间,在python爬虫等应用中相当有用。

time模块包含用于获取当前时间 、操作时间和日期、从字符串中读取日期、将日期格式化为字符串函数。日期可以表示为自从 1970 年 1 月 1 日午夜(历元)经过了秒的一个实数,也可以表示为包含9个整数的元组。

2.时间戳与时间元组

2.1时间戳

import time
ticks = time.time()
print ("当前时间戳为:", ticks)
当前时间戳为: 1645263377.554756

上面这个案例演示了用time()获取当前的时间戳。

2.2时间元组

很多Python函数用一个元组装起来的9组数字处理时间:

索引 属性 字段
0 tm_year 如2000,2022等
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 夏令时 0、1或-1
N/A tm_zone 时区 时区名称的缩写
N/A tm_gmtoff UTC东偏 以秒为单位

秒的取值范围为0~61,考虑到闰一秒或闰两秒的情形。夏令时数字是布尔值,如果使用-1,表示未知的,那么使用mktime()可能得到正确的值。

import time

localtime = time.localtime()
print ("本地时间为 :", localtime)
本地时间为 : time.struct_time(tm_year=2022, tm_mon=2, tm_mday=19, tm_hour=17, tm_min=49, tm_sec=21, tm_wday=5, tm_yday=50, tm_isdst=0)

上面这个案例演示了获取当前时间的时间元组。

localtime()的缺省值为time()返回的当前时间戳。

3.时间格式化

3.1获取格式化的时间

你可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime():

import time

localtime = time.asctime(time.localtime())
print ("本地时间为 :", localtime)
本地时间为 : Sat Feb 19 17:59:17 2022

此处也可直接使用asctime(),因为asctime()的缺省值为localtime()返回的当前时间。

亦可使用 ctime()ctime() 等价于 asctime(localtime())

3.2自定义格式化

我们可以使用 time 模块的 strftime 方法来格式化日期:time.strftime(format[, t]),第一个参数是格式化字符串,第二个参数是时间元组。

import time

print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

print(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))
2022-02-19 18:28:08
Sat Feb 19 18:28:08 2022

上面的案例演示了将本地时间进行格式化输出。

格式化符号 含意
%a 本地化的缩写星期中每日的名称。
%A 本地化的星期中每日的完整名称。
%b 本地化的月缩写名称。
%B 本地化的月完整名称。
%c 本地化的适当日期和时间表示。
%d 十进制数 [01,31] 表示的月中日。
%H 十进制数 [00,23] 表示的小时(24小时制)。
%I 十进制数 [01,12] 表示的小时(12小时制)。
%j 十进制数 [001,366] 表示的年中日。
%m 十进制数 [01,12] 表示的月。
%M 十进制数 [00,59] 表示的分钟。
%p 本地化的 AM 或 PM 。
%S 十进制数 [00,61] 表示的秒。
%U 十进制数 [00,53] 表示的一年中的周数(星期日作为一周的第一天)。 在第一个星期日之前的新年中的所有日子都被认为是在第 0 周。
%w 十进制数 [0(星期日),6] 表示的周中日。
%W 十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天)。 在第一个星期一之前的新年中的所有日子被认为是在第 0 周。
%x 本地化的适当日期表示。
%X 本地化的适当时间表示。
%y 十进制数 [00,99] 表示的没有世纪的年份。
%Y 十进制数表示的带世纪的年份。
%z 十进制带符号数[-1200,+1200]表示时区。
%Z 时区名称。
%% 字面的 '%' 字符。

4.附录

4.1重要函数

函数 描述
asctime([t]) 将时间元组转换为字符串
ctime([secs]) 将秒转换为字符串
localtime([secs]) 将秒转换为当地时间的时间元组
gmtime([secs]) 将秒转换为UTC时间的时间元组
mktime(t) 将时间元组转换为当地时间
sleep(secs) 休眠secs秒
strftime(format[, t]) 将字符串转换为时间元组
time() 当前时间,自纪元以来的秒

4.2参考

官方文档:https://docs.python.org/zh-cn/3/library/time.html

GISer, a novice who is learning hard
博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 ( CC 4.0 BY-SA ) 协议
本文永久链接是: https://blog.manchan.top/post/python-time/