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

Pandas时间偏移异常:UTC转LST时间计算错误排查与解决

解决UTC转LST时日期解析错误的问题

核心问题是UTC时间字符串被错误解析(把mm-dd-yyyy格式当成了dd-mm-yyyy),导致timedelta计算后日期出错。解决关键是显式指定日期格式,确保datetime对象的正确性。

针对Pandas DataFrame场景(你的代码看起来是处理DataFrame)

  1. 先将UTC时间字符串列正确转换为datetime类型,显式指定格式:
import pandas as pd
from datetime import timedelta

# 显式指定格式为mm-dd-yyyy hh:mm,避免自动解析歧义
d['dtime_UTC'] = pd.to_datetime(d['dtime_UTC'], format='%m-%d-%Y %H:%M')

# 计算UTC-8的LST时间
d['dtime [LST]'] = d['dtime_UTC'] - timedelta(hours=8)

# 可选:如果需要将结果转为指定格式的字符串
d['dtime [LST]'] = d['dtime [LST]'].dt.strftime('%m-%d-%Y %H:%M')

针对普通datetime模块场景

如果是处理单个时间字符串:

from datetime import datetime, timedelta

utc_time_str = "01-02-2023 00:02"
# 按mm-dd-yyyy hh:mm格式解析
utc_dt = datetime.strptime(utc_time_str, '%m-%d-%Y %H:%M')
# 转换为LST(UTC-8)
lst_dt = utc_dt - timedelta(hours=8)
# 转为目标格式字符串
lst_time_str = lst_dt.strftime('%m-%d-%Y %H:%M')

错误原因说明

当日期字符串包含01-02这类日和月均小于13的内容时,自动解析工具(如pandas的to_datetime)会默认按dd-mm-yyyy格式解析,把1月2日错误识别为2月1日。减8小时后,2月1日00:02变成1月31日16:02,这就是你遇到的错误。显式指定格式可以彻底避免这种歧义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:05:23