Python时间戳处理方法_时间转换解析【教程】

Python处理时间戳需区分秒级/毫秒级,用time.time()或datetime.timestamp()获取,datetime.fromtimestamp()转本地时间、utcfromtimestamp()转UTC时间,strptime()解析字符串,zoneinfo模块推荐用于跨时区处理。

Python 中处理时间戳的核心是 datetimetime 模块,关键在于分清“时间戳(timestamp)”是秒级还是毫秒级,并明确目标格式(字符串、datetime 对象或其它时区时间)。

获取当前时间戳(秒级/毫秒级)

系统默认返回的是自 1970-01-01 UTC 起的秒数(float 类型),毫秒级需乘以 1000:

  • 秒级时间戳:用 time.time()int(datetime.now().timestamp())
  • 毫秒级时间戳int(time.time() * 1000)int(datetime.now().timestamp() * 1000)

时间戳转为可读时间(datetime 或字符串)

datetime.fromtimestamp() 转成本地时区 datetime 对象;用 datetime.utcfromtimestamp() 转成 UTC 时间;再用 .strftime() 格式化为字符串:

  • 本地时间:datetime.fromtimestamp(1717027200).strftime('%Y-%m-%d %H:%M:%S')'2025-05-31 00:00:00'
  • UTC 时间:datetime.utcfromtimestamp(1717027200).strftime('%Y-%m-%d %H:%M:%S')'2025-05-30 16:00:00'
  • 注意:若原始时间戳是毫秒级,先除以 1000 再传入

字符串转时间戳(支持多种格式)

先用 datetime.strptime() 解析字符串为 datetime 对象,再调用 .timestamp() 方法:

  • dt = datetime.strptime('2025-05-31 10:30:00', '%Y-%m-%d %H:%M:%S')
  • ts = int(dt.timestamp()) → 得到本地时区对应的秒级时间戳
  • 如需强制按 UTC 解析,可用 datetime.strptime(...).replace(tzinfo=timezone.utc).timestamp()

跨时区时间戳处理(推荐用 zoneinfo)

Python 3.9+ 推荐使用 zoneinfo 模块避免 pytz 的复杂性:

  • 将时间戳转为北京时间:datetime.fromtimestamp(ts, ZoneInfo("Asia/Shanghai"))
  • 将字符串按东京时间解析再转时间戳:dt = datetime.strptime('2025-05-31 12:00', '%Y-%m-%d %H:%M').replace(tzinfo=ZoneInfo("Asia/Tokyo"))dt.timestamp()
  • 未指定时区的时间戳默认按本地系统时区解释,易出错,建议显式声明