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

如何将Fri Apr 01 2022 00:01:00 GMT+0100格式时间转为UTC(Python)

解决方案

首先,你原代码的日期格式字符串匹配错误,且%Z无法正确识别GMT+0100这种带偏移的时区标识,需要调整解析逻辑,同时完成时区转换:

步骤1:正确解析带时区偏移的时间并转换为UTC

可以通过两种方式实现:

方式一:读取后统一处理(更直观)

import pandas as pd

# 读取Excel,先将datetime列按字符串读取
ch = pd.read_excel(
    r'ACEOM2022-04_2022-07.xlsx',
    skiprows=[1],
    dtype={'datetime': str}
)

# 解析带时区偏移的时间格式,注意格式字符串匹配原始时间结构
ch['datetime'] = pd.to_datetime(ch['datetime'], format="%a %b %d %Y %H:%M:%S GMT%z")

# 将带时区的时间转换为UTC
ch['datetime'] = ch['datetime'].dt.tz_convert('UTC')

方式二:自定义date_parser在读取时完成转换

import pandas as pd
from datetime import datetime, timezone

def date_parser(x):
    # 解析原始时间字符串,%z匹配+0100这种时区偏移
    dt = datetime.strptime(x, "%a %b %d %Y %H:%M:%S GMT%z")
    # 转换为UTC时区
    return dt.astimezone(timezone.utc)

ch = pd.read_excel(
    r'ACEOM2022-04_2022-07.xlsx',
    skiprows=[1],
    dtype={'datetime': str},
    parse_dates=["datetime"],
    date_parser=date_parser
)

步骤2:统一已有UTC格式DataFrame的时间类型

确保你已有的UTC DataFrame的时间列是带时区信息的datetime类型(tz-aware),如果是无时区的naive datetime,需要补全时区信息:

# 假设已有UTC DataFrame名为df_utc,时间列是'datetime'
df_utc['datetime'] = pd.to_datetime(df_utc['datetime'], utc=True)

完成以上操作后,两个DataFrame的时间列都会是带UTC时区标识的datetime类型,实现格式统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:50:13