python怎么把时间转换为时间戳

Python中时间转时间戳核心用datetime或time模块:字符串需先strptime解析再timestamp();datetime对象直接调用timestamp();UTC时间须明确时区以避免偏差。

Python 中把时间转换为时间戳,核心是用 timedatetime 模块,关键看你的“时间”是什么格式:是字符串、datetime 对象,还是 struct_time

从字符串时间转时间戳(常用)

比如你有一个日期时间字符串 "2025-05-20 14:30:00",需要先解析成 datetime 对象,再转时间戳:

  • datetime.strptime() 解析字符串
  • 调用 .timestamp() 方法(推荐,自动处理时区)

示例:

from datetime import datetime

dt_str = "2025-05-20 14:30:00" dt = datetime.strptime(dt_str, "%Y-%m-%d %H:%M:%S") timestamp = dt.timestamp() # 返回浮点数,单位秒 print(timestamp) # 如:1716215400.0

从 datetime 对象转时间戳

如果你已有 datetime 对象(比如 datetime.now()),直接调用 .timestamp() 即可:

  • 注意:本地时间对象默认按系统时区转;若为 timezone-aware(带时区),结果更准确
  • 不带时区的对象(naive)会被当作本地时间处理

示例:

from datetime import datetime

now = datetime.now() ts = now.timestamp() print(ts)

用 time 模块(兼容旧代码)

适合已知是本地时间且格式较固定的情况:

  • 先用 time.strptime() 得到 struct_time
  • 再用 time.mktime() 转为本地时间戳(仅适用于本地时区)
  • ⚠️ 不推荐用于 UTC 时间或跨时区场景

示例:

import time

t_str = "2025-05-20 14:30:00" t_struct = time.strptime(t_str, "%Y-%m-%d %H:%M:%S") ts = time.mktime(t_struct) # 本地时间戳 print(ts)

UTC 时间转时间戳(避免时区坑)

如果原始时间是 UTC 字符串(如 "2025-05-20T14:30:00Z"),建议明确指定时区:

  • datetime.fromisoformat()(Python 3.7+)配合 timezone.utc
  • 或用 dateutil.parser.parse()(需安装 python-dateutil

示例(标准 UTC ISO 格式):

from datetime import datetime, timezone

utc_str = "2025-05-20T14:30:00Z" dt_utc = datetime.fromisoformat(utc_str.replace("Z", "+00:00")) ts = dt_utc.timestamp() # 正确转为 UTC 对应的 Unix 时间戳 print(ts)

基本上就这些。优先用 datetime.timestamp(),注意时区含义,字符串记得配对正确的格式码。不复杂但容易忽略时区,一错就差 8 小时 ?