在 Python 中,datetime 模块提供了多种方式来输出和处理日期时间,以下是几种常见的输出方式,从简单到复杂:
直接打印 datetime 对象
使用 print() 直接输出 datetime 对象,默认格式为 YYYY-MM-DD HH:MM:SS.ffffff(包含微秒)。
from datetime import datetime now = datetime.now() print(now) # 输出示例: 2025-10-25 14:30:45.123456
格式化输出(strftime)
使用 strftime() 方法将 datetime 对象格式化为字符串,支持自定义格式。
常用格式代码
| 代码 | 含义 | 示例 |
|---|---|---|
%Y |
4位年份 | 2025 |
%y |
2位年份 | 23 |
%m |
月份(01-12) | 10 |
%d |
日期(01-31) | 25 |
%H |
24小时制小时(00-23) | 14 |
%I |
12小时制小时(01-12) | 02 |
%M |
分钟(00-59) | 30 |
%S |
秒(00-59) | 45 |
%f |
微秒(000000-999999) | 123456 |
%A |
星期全名 | Wednesday |
%a |
星期缩写 | Wed |
%B |
月份全名 | October |
%b |
月份缩写 | Oct |
%p |
AM/PM | PM |
示例
from datetime import datetime
now = datetime.now()
# 常见格式
print(now.strftime("%Y-%m-%d %H:%M:%S")) # 2025-10-25 14:30:45
print(now.strftime("%Y/%m/%d %I:%M:%S %p")) # 2025/10/25 02:30:45 PM
print(now.strftime("%d %B %Y")) # 25 October 2025
print(now.strftime("%a, %d %b %Y %H:%M")) # Wed, 25 Oct 2025 14:30
仅输出日期或时间
如果只需要日期或时间部分,可以通过 date() 或 time() 方法提取。
from datetime import datetime
now = datetime.now()
# 仅日期
print(now.date()) # 2025-10-25
print(now.strftime("%Y-%m-%d")) # 2025-10-25
# 仅时间
print(now.time()) # 14:30:45.123456
print(now.strftime("%H:%M:%S")) # 14:30:45
输出 Unix 时间戳(秒/毫秒)
使用 timestamp() 方法获取自 1970-01-01 以来的秒数(浮点数)。
from datetime import datetime now = datetime.now() timestamp_seconds = now.timestamp() timestamp_ms = int(timestamp_seconds * 1000) print(timestamp_seconds) # 1698237045.123456 print(timestamp_ms) # 1698237045123
从字符串解析为 datetime
如果需要将字符串转换为 datetime 对象,使用 strptime()。
from datetime import datetime date_str = "2025-10-25 14:30:45" dt = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S") print(dt) # 2025-10-25 14:30:45
时区处理(需 pytz 或 Python 3.9+)
Python 3.9+ 内置 zoneinfo 模块支持时区:
from datetime import datetime
from zoneinfo import ZoneInfo # Python 3.9+
# 带时区的输出
now_utc = datetime.now(ZoneInfo("UTC"))
now_shanghai = datetime.now(ZoneInfo("Asia/Shanghai"))
print(now_utc) # 2025-10-25 06:30:45+00:00
print(now_shanghai) # 2025-10-25 14:30:45+08:00
- 直接打印:默认格式(
YYYY-MM-DD HH:MM:SS.ffffff)。 - 格式化输出:
strftime()自定义格式。 - 仅日期/时间:
date()或time()方法。 - 时间戳:
timestamp()获取秒数。 - 字符串转换:
strptime()解析字符串。
根据需求选择合适的方式即可!
