在 Python 中,想要将时间格式化,可以使用以下 2 个模块来实现。
- time 模块
- datetime 模块
使用 time 模块实现时间格式化
在 Python 中,我们可以使用 time 模块的 strftime() 函数来将时间进行格式化。时间格式化,指的是将时间转化为想要的格式(自定义格式)。
其中,strftime 是 “string format time” 的缩写。
语法:
time.strftime(format, tuple)说明:
参数 format 是格式,tuple 是一个 struct_time 元组。其中,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()
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()
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()
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()
wd = time.strftime('%A', local)
result = days[wd]
print(result)运行结果如下。
星期一分析:
这个示例定义了一个字典 days。该字典的键是英文星期几,值是中文星期几。因此我们只需要拿到英文星期几,就可以获取对应的中文星期几了。
使用 datetime 模块实现时间格式化
在 Python 中,我们可以使用 datetime.datetime.now() 方法来获取当前日期时间,该方法会返回 datetime 对象。datetime 对象有一个 strftime() 方法,可以用于格式化时间。
需要注意的是,虽然 datetime 对象的 strftime() 方法和 time 模块的 strftime() 函数使用的格式化符号是完全一样的,但它们在调用语法上有所区别。
语法:
import datetime as dt
# 先获取 datetime 对象
now = dt.datetime.now()
# 然后调用对象的 strftime() 方法,只需要传入格式字符串
now.strftime(format)说明:
参数 format 是时间格式化字符串。注意,与 time 模块不同,这里的 strftime() 是对象自身的方法,因此不需要额外传入时间元组。
示例 5:datetime 格式化时间
import datetime as dt
now = dt.datetime.now()
result = now.strftime('当前时间是:%Y-%m-%d %H:%M:%S %A')
print(result)运行结果如下。
当前时间是:2025-05-20 13:14:30 Monday分析:
如果想要单独获取年、月、日,或者时、分、秒,同样只需要使用正确的单个格式符就可以实现了。
