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

如何考虑冬夏令时将瑞士时区日期转换为UTC格式?

瑞士时区(CET/CEST)转UTC格式解决方案

需求说明

需将瑞士本地时间的聊天记录日期转换为UTC格式,自动适配冬夏令时规则:

  • 冬季采用CET(UTC+01:00)
  • 夏季采用CEST(UTC+02:00)

给定原始日期数据:

import pandas as pd

df = pd.DataFrame()
df['dates_raw'] = [
    '2022-01-20 01:12:15',
    '2022-06-22 12:00:00',
    '2022-10-29 05:57:02',
    '2022-12-18 09:34:17',
    '2023-01-12 06:36:10',
    '2023-02-17 20:23:10',
    '2023-04-12 02:02:24',
    '2023-09-12 15:57:35',
]

期望转换后的UTC日期:

df['dates_converted'] = [
    '2022-01-20 00:12:15',
    '2022-06-22 10:00:00',
    '2022-10-29 03:57:02',
    '2022-12-18 08:34:17',
    '2023-01-12 05:36:10',
    '2023-02-17 19:23:10',
    '2023-04-12 00:02:24',
    '2023-09-12 13:57:35',
]

解决方案

无需手动维护冬夏令时切换日期,Pandas结合IANA时区数据库可自动处理时区转换。瑞士对应的IANA时区为Europe/Zurich,该数据库已内置所有冬夏令时切换规则,无需手动维护。

完整代码实现

import pandas as pd

# 原始数据
df = pd.DataFrame()
df['dates_raw'] = [
    '2022-01-20 01:12:15',
    '2022-06-22 12:00:00',
    '2022-10-29 05:57:02',
    '2022-12-18 09:34:17',
    '2023-01-12 06:36:10',
    '2023-02-17 20:23:10',
    '2023-04-12 02:02:24',
    '2023-09-12 15:57:35',
]

# 1. 将字符串转为datetime类型
df['datetime'] = pd.to_datetime(df['dates_raw'])

# 2. 本地化到瑞士时区,再转换为UTC
df['dates_converted'] = df['datetime'].dt.tz_localize('Europe/Zurich').dt.tz_convert('UTC')

# 3. 格式化为指定字符串格式(可选,若需保留datetime类型可跳过此步)
df['dates_converted_str'] = df['dates_converted'].dt.strftime('%Y-%m-%d %H:%M:%S')

# 查看结果
print(df[['dates_raw', 'dates_converted_str']])

代码说明

  1. pd.to_datetime:将原始字符串日期转换为Pandas的datetime对象,为后续时区处理提供基础。
  2. dt.tz_localize('Europe/Zurich'):为无时区信息的datetime对象标记瑞士本地时区,自动识别当前时间属于CET还是CEST。
  3. dt.tz_convert('UTC'):将瑞士本地时间转换为UTC时间,自动适配冬夏令时的时差差异。
  4. dt.strftime:将转换后的UTC datetime对象格式化为与期望结果一致的字符串格式。

结果验证

运行代码后,dates_converted_str列的输出将与给定的期望转换结果完全匹配,无需手动判断切换日期,避免了维护规则的繁琐和人为错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 22:13:12