在 Python 中,Unix 时间(也称为 POSIX 时间或 Epoch 时间)是指自 1970 年 1 月 1 日 00:00:00 UTC(协调世界时)以来经过的秒数(不考虑闰秒),Python 提供了多种方法来处理 Unix 时间和 datetime 对象之间的转换。

(图片来源网络,侵删)
将 Unix 时间戳转换为 datetime 对象
使用 datetime 模块的 fromtimestamp() 方法:
import datetime unix_timestamp = 1672531200 # 示例时间戳(2025-01-01 00:00:00 UTC) dt_object = datetime.datetime.fromtimestamp(unix_timestamp) print(dt_object) # 输出: 2025-01-01 00:00:00
注意事项:
- 默认返回的是本地时区的时间,如果需要 UTC 时间,可以指定时区:
dt_utc = datetime.datetime.utcfromtimestamp(unix_timestamp) print(dt_utc) # 输出: 2025-01-01 00:00:00 (UTC)
- 对于 Python 3.3+,推荐使用
timezone模块处理时区:from datetime import timezone dt_utc = datetime.datetime.fromtimestamp(unix_timestamp, tz=timezone.utc)
将 datetime 对象转换为 Unix 时间戳
使用 timestamp() 方法(Python 3.3+)或手动计算:
方法 1:直接使用 timestamp()
import datetime dt_object = datetime.datetime(2025, 1, 1, 0, 0, 0) unix_timestamp = dt_object.timestamp() print(unix_timestamp) # 输出: 1672531200.0
方法 2:手动计算(兼容旧版本)
import datetime dt_object = datetime.datetime(2025, 1, 1, 0, 0, 0) epoch = datetime.datetime(1970, 1, 1) unix_timestamp = (dt_object - epoch).total_seconds() print(unix_timestamp) # 输出: 1672531200.0
处理毫秒级时间戳
如果时间戳是毫秒级(如 JavaScript 常用),需先除以 1000:
import datetime millisecond_timestamp = 1672531200000 # 毫秒级时间戳 unix_timestamp = millisecond_timestamp / 1000 dt_object = datetime.datetime.fromtimestamp(unix_timestamp) print(dt_object) # 输出: 2025-01-01 00:00:00
使用 time 模块
time 模块也提供了转换方法:

(图片来源网络,侵删)
import time # 时间戳转 datetime unix_timestamp = 1672531200 dt_object = datetime.datetime.fromtimestamp(unix_timestamp) # datetime 转时间戳 dt_object = datetime.datetime(2025, 1, 1, 0, 0, 0) unix_timestamp = time.mktime(dt_object.timetuple()) # 注意:这是本地时间
格式化输出
可以将 datetime 对象格式化为字符串:
import datetime
unix_timestamp = 1672531200
dt_object = datetime.datetime.fromtimestamp(unix_timestamp)
formatted_time = dt_object.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_time) # 输出: 2025-01-01 00:00:00
| 操作 | 方法 |
|---|---|
| 时间戳 → datetime | datetime.datetime.fromtimestamp(timestamp) |
| datetime → 时间戳 | datetime_object.timestamp() (推荐) 或手动计算 |
| UTC 时间处理 | datetime.datetime.utcfromtimestamp(timestamp) 或指定 tz=timezone.utc |
| 毫秒级时间戳 | 先除以 1000 再转换 |
根据你的 Python 版本和需求选择合适的方法。

(图片来源网络,侵删)
