You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python转换Unix时间戳为UTC时间结果错误及小时差计算问题

问题原因及解决方法

时间戳转换错误的根源

你使用的1633438809404是毫秒级Unix时间戳,不符合Python各类时间转换接口的默认单位要求:

  • datetime、time库默认要求传入秒级时间戳,直接传毫秒值相当于数值放大1000倍,导致年份溢出报错
  • pandas转换时你指定了单位为纳秒(ns),和实际的毫秒单位不符,所以得到了1970年的错误结果

正确的UTC时间转换代码

1. datetime库实现

import datetime

timestamp = 1633438809404
# 毫秒转秒,调用utcfromtimestamp直接得到UTC时间
dt_utc = datetime.datetime.utcfromtimestamp(timestamp / 1000)
print(dt_utc)
# 输出结果:2021-10-05 15:40:09.404000

2. time库实现

import time

timestamp = 1633438809404
# gmtime返回UTC时间的struct_time对象,localtime返回的是本地时区时间
time_obj = time.gmtime(int(timestamp / 1000))
print(time_obj)
# 输出:time.struct_time(tm_year=2021, tm_mon=10, tm_mday=5, tm_hour=15, tm_min=40, tm_sec=9, tm_wday=1, tm_yday=278, tm_isdst=0)

3. pandas库实现

import pandas as pd

timestamp = 1633438809404
# 指定单位为毫秒ms,开启utc参数得到UTC时间
unix_conversion = pd.to_datetime(timestamp, unit='ms', utc=True)
print(unix_conversion)
# 输出:2021-10-05 15:40:09.404000+00:00

两个时间段小时数计算方法

拿到datetime格式的时间对象后,直接做差得到timedelta对象即可换算小时数:

import datetime

# 示例两个UTC时间
dt1 = datetime.datetime.utcfromtimestamp(1633438809404 / 1000)
dt2 = datetime.datetime.utcfromtimestamp(1633525209404 / 1000)

# 计算时间差
delta = dt2 - dt1
# 换算为总小时数,支持小数
total_hours = delta.total_seconds() / 3600
print(total_hours)
# 输出:24.0

注意:计算时间差前需确保两个时间对象的时区属性一致,否则会抛出运算错误

内容的提问来源于stack exchange,提问作者dominik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:45:04