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

如何将Pandas date_range转换为UTC毫秒级Epoch时间戳?

获取UTC时区的毫秒级Epoch时间戳列表

最优解法:直接利用Pandas原生方法(无需字符串转换)

Pandas生成的带时区的datetime对象可以直接转换为UTC时间戳,无需先转字符串再解析,既高效又能避免时区错误:

import pandas as pd

# 生成带UTC时区的月度日期范围
dates = pd.date_range(start='1/1/2022', end='10/1/2022', freq='M', tz='UTC')

# 转换为毫秒级UTC Epoch时间戳:先转纳秒级int64,再除以1e6得到毫秒
list_epoch = (dates.astype('int64') // 1000000).tolist()

print(list_epoch)

原代码出错原因

你用time.mktime()处理解析后的时间时,这个函数的作用是将本地时区的struct_time转换为Epoch时间戳,而非UTC时间。即便解析的字符串带Z(UTC标识),time.strptime()生成的是无时区信息的struct_time,time.mktime()会默认把它当作本地时区处理,最终导致时间戳偏移。

若要保留字符串转换思路(不推荐)

如果一定要先转字符串再处理,需用datetime模块将字符串解析为带UTC时区的对象,再获取时间戳:

import pandas as pd
from datetime import datetime, timezone

dates = pd.date_range(start='1/1/2022', end='10/1/2022',
                      freq='M', tz='UTC').strftime("%Y-%m-%dT%H:%M:%S.%fZ").tolist()

list_epoch = []
for i in dates:
    # 解析字符串为UTC时区的datetime对象
    dt = datetime.strptime(i, "%Y-%m-%dT%H:%M:%S.%fZ").replace(tzinfo=timezone.utc)
    # 获取UTC时间戳(秒级)并转换为毫秒
    epoch = int(dt.timestamp() * 1000)
    list_epoch.append(epoch)

print(list_epoch)

两种方法的输出结果一致,比如第一个日期2022-01-31 00:00:00+00:00对应的毫秒级Epoch为1643577600000。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:10:29