最常用方法是使用datetime.fromtimestamp()将时间戳转为本地时间,如需UTC时间则用datetime.utcfromtimestamp()或结合timezone.utc处理时区,推荐使用timezone明确时区设置,并可用strftime()按需格式化输出。

使用 Python 将时间戳转换为日期时间,最常用的方法是利用内置的 datetime 模块。时间戳通常是指从 1970-01-01 00:00:00 UTC 开始经过的秒数,也叫 Unix 时间戳。
使用 datetime.fromtimestamp()
这是最直接的方式,将时间戳转为本地时区的日期时间:示例代码:
立即学习“Python免费学习笔记(深入)”;
from datetime import datetime
timestamp = 1700000000
dt = datetime.fromtimestamp(timestamp)
print(dt) # 输出:2023-11-14 15:33:20(具体取决于本地时区)
转换为 UTC 时间
如果希望得到 UTC 时间而不是本地时间,使用 datetime.utcfromtimestamp()(注意:在较新版本 Python 中推荐使用 utcfromtimestamp 并配合 timezone):示例代码:
立即学习“Python免费学习笔记(深入)”;
from datetime import datetime
timestamp = 1700000000
dt_utc = datetime.utcfromtimestamp(timestamp)
print(dt_utc) # 输出:2023-11-14 07:33:20
处理时区(推荐方式)
更现代和推荐的做法是使用 timezone 来明确指定时区,避免歧义:示例代码:
立即学习“Python免费学习笔记(深入)”;
from datetime import datetime, timezone
timestamp = 1700000000
dt_utc = datetime.fromtimestamp(timestamp, tz=timezone.utc)
print(dt_utc) # 带时区信息的 UTC 时间
# 转换为北京时间(UTC+8)需要额外导入 timedelta:
beijing_tz = timezone.utc.offset = timedelta(hours=8)
dt_beijing = dt_utc.astimezone(timezone(timedelta(hours=8)))
print(dt_beijing)
from datetime import timedelta
格式化输出
你可以使用 strftime() 方法自定义输出格式:
formatted = dt.strftime("%Y-%m-%d %H:%M:%S")
print(formatted) # 如:2023-11-14 15:33:20
- %Y:四位年份
- %m:月份(01-12)
- %d:日期(01-31)
- %H:小时(00-23)
- %M:分钟(00-59)
- %S:秒(00-59)
基本上就这些。用 datetime.fromtimestamp() 最简单,加时区更准确,按需选择格式输出即可。











