杰瑞科技汇

Python如何转换Unix时间戳?

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

Python如何转换Unix时间戳?-图1
(图片来源网络,侵删)

将 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 模块也提供了转换方法:

Python如何转换Unix时间戳?-图2
(图片来源网络,侵删)
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 版本和需求选择合适的方法。

Python如何转换Unix时间戳?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇