在 Python 中,time 模块偏重于底层平台,该模块中大多数函数会调用当前计算机的 C 链接库。后面介绍的 datetime 模块也是基于 time 模块实现的。
Python time 获取时间
在 Python 中,我们可以使用 time 模块的各种函数来操作时间。
语法:
import time
time. 函数名 ()说明:
time 模块内置的函数非常多,不过常用的只有 3 种,如下表所示。
| 方法 | 说明 |
|---|---|
| time() | 获取当前时间戳 |
| localtime( 时间戳 ) | 将 “时间戳” 转化为 “本地时间” |
| strftime( 格式化字符串 , 本地时间 ) | 将 “本地时间” 转化为 “指定格式” |
时间戳是什么?
所谓的时间戳,指的是从 1970 年 1 月 1 日 0 分 0 秒到当前时间的总秒数。无论在哪一种语言中,时间戳都是一种非常有用的东西。
使用 time 模块,如果想要获取当前时间,需要以下 3 步。
① time() 获取时间戳
import time
print(time.time())运行结果如下。
1667128377.2994165② localtime() 将时间戳转化为本地时间
import time
local = time.localtime(time.time())
print(local)运行结果如下。
time.struct_time(tm_year=2025, tm_mon=5, tm_mday=20, tm_hour=13, tm_min=14, tm_sec=30, tm_wday=6, tm_yday=136, tm_isdst=0)③ strftime() 将本地时间转化为想要的格式
import time
local = time.localtime(time.time())
result = time.strftime('%Y-%m-%d', local)
print(result)运行结果如下。
2025-05-20提示: time.localtime() 获取的是当前的本地时间,实际上 time.localtime() 和 time.localtime(time.time()) 两者是等价的。
Python time 格式化时间
在 Python 中,我们可以使用 time 模块的 strftime() 函数来将时间进行格式化。时间格式化,指的是将时间转化为想要的格式(自定义格式)。
其中,strftime 是 “string format time” 的缩写。
语法:
time.strftime(format, tuple)说明:
参数 format 是格式,tuple 是一个元组。其中,format 中常用的格式化符号如下表所示。
| 符号 | 说明 |
|---|---|
| %Y | 年,如 2025 |
| %m | 月,01~12 |
| %d | 日,01~31 |
| %H | 时,00~23 |
| %M | 分,00~59 |
| %S | 秒,00~59 |
| %a | 简写星期,例如 Mon、Tues、Wed 等 |
| %A | 完整星期,例如 Monday、Tuesday、Wednesday 等 |
在实际开发中,我们可以使用这些格式化符号自由组合,以得到想要的时间格式。
示例 1:time 获取完整时间
import time
local = time.localtime(time.time())
result = time.strftime('当前时间是:%Y-%m-%d %H:%M:%S %A', local)
print(result)运行结果如下。
当前时间是:2025-05-20 13:14:30 Monday分析:
如果想要单独获取年、月、日,或者时、分、秒,此时应该怎么做呢?其实很简单,我们只需要使用正确的单个格式符就可以实现了。
示例 2:time 获取年、月、日
import time
local = time.localtime(time.time())
year = time.strftime('%Y', local)
month = time.strftime('%m', local)
day = time.strftime('%d', local)
print('年:', year)
print('月:', month)
print('日:', day)运行结果如下。
年:2025
月:05
日:20分析:
想要单独获取年份,strftime() 的第 1 个参数应该是 “%Y”。想要单独获取月份,strftime() 的第 1 个参数应该是 “%m”。
示例 3:time 获取时分秒
import time
local = time.localtime(time.time())
hour = time.strftime('%H', local)
minute = time.strftime('%M', local)
second = time.strftime('%S', local)
print('时:', hour)
print('分:', minute)
print('秒:', second)运行结果如下。
时:13
分:14
秒:30分析:
可能有小伙伴就会问了:如果希望输出的是 “星期一”,而不是 “Monday” 这样的格式,应该怎么做呢?我们可以使用一个字典来实现。
示例 4:time 获取星期几
import time
days = {
'Monday': '星期一',
'Tuesday': '星期二',
'Wednesday': '星期三',
'Thursday': '星期四',
'Friday': '星期五',
'Saturday': '星期六',
'Sunday': '星期日'
}
local = time.localtime(time.time())
wd = time.strftime('%A', local)
result = days[wd]
print(result)运行结果如下。
星期一分析:
这个示例定义了一个字典 days。该字典的键是英文星期几,值是中文星期几。因此我们只需要拿到英文星期几,就可以获取对应的中文星期几了。
struct_time 元组
从前面可以知道,使用 time 模块来获取时间需要 3 步,其中第 2 步获取的本地时间就是一个 struct_time 元组。
struct_time 元组共有 9 个元素:年、月、日、时、分、秒、星期几、一年中第几天、是否为夏令时。struct_time 元组的属性如下表所示。
| 属性 | 说明 |
|---|---|
| tm_year | 年,如 2025 |
| tm_mon | 月,1~12 |
| tm_mday | 日,1~31 |
| tm_hour | 时,00~23 |
| tm_min | 分,00~59 |
| tm_sec | 秒,00~59 |
| tm_wday | 星期几,0~6,其中 0 是星期一 |
| tm_yday | 一年的第几日,1~366 |
| tm_isdst | 夏令时 |
接下来尝试使用 struct_time 元组来获取年月日、时分秒以及星期几。
示例 5:使用 struct_time 元组获取年、月、日
import time
local = time.localtime()
year = local.tm_year
month = local.tm_mon
day = local.tm_mday
print('年:', year)
print('月:', month)
print('日:', day)运行结果如下。
年:2025
月:5
日:20示例 6:使用 struct_time 元组获取时、分、秒
import time
local = time.localtime()
hour = local.tm_hour
minute = local.tm_min
second = local.tm_sec
print('时:', hour)
print('分:', minute)
print('秒:', second)运行结果如下。
时:13
分:14
秒:30示例 7:使用 struct_time 元组获取星期几
import time
days = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
local = time.localtime()
wd = local.tm_wday
print(days[wd])运行结果如下。
星期一分析:
上面定义了一个列表 days,用来存储 0~6 对应是星期几。变量 local 其实就是一个 struct_time 元组,local.tm_wday 返回表示当前星期几的数字。然后通过该数字就可以找到 days 中对应的星期几了。
对于年、月、日、时、分、秒,如果是使用 time 模块,我们有 2 种方式可以实现:① 格式化符号;② struct_time 元组。
