Python 提供了一个 time模块来格式化时间,在python爬虫等应用中相当有用。
time模块包含用于获取当前时间 、操作时间和日期、从字符串中读取日期、将日期格式化为字符串函数。日期可以表示为自从 1970 年 1 月 1 日午夜(历元)经过了秒的一个实数,也可以表示为包含9个整数的元组。
import time
ticks = time.time()
print ("当前时间戳为:", ticks)
当前时间戳为: 1645263377.554756
上面这个案例演示了用time()
获取当前的时间戳。
很多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()
返回的当前时间戳。
你可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime():
import time
localtime = time.asctime(time.localtime())
print ("本地时间为 :", localtime)
本地时间为 : Sat Feb 19 17:59:17 2022
此处也可直接使用asctime()
,因为asctime()
的缺省值为localtime()
返回的当前时间。
亦可使用 ctime()
, ctime()
等价于 asctime(localtime())
。
我们可以使用 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 | 时区名称。 |
%% | 字面的 ‘%’ 字符。 |
函数 | 描述 |
---|---|
asctime([t]) |
将时间元组转换为字符串 |
ctime([secs]) |
将秒转换为字符串 |
localtime([secs]) |
将秒转换为当地时间的时间元组 |
gmtime([secs]) |
将秒转换为UTC时间的时间元组 |
mktime(t) |
将时间元组转换为当地时间 |
sleep(secs) |
休眠secs秒 |
strftime(format[, t]) |
将字符串转换为时间元组 |
time() |
当前时间,自纪元以来的秒 |
官方文档:https://docs.python.org/zh-cn/3/library/time.html