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