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

如何计算欧盟DST切换日期?如何判断UTC时间戳是否处于欧盟DST生效状态?

欧盟夏令时(DST)切换日期计算方法

欧盟地区统一遵循以下夏令时切换规则:

  • 进入夏令时:每年3月的最后一个星期日,UTC时间1:00开始,当地时钟调快1小时(切换为UTC+2时区)。
  • 退出夏令时:每年10月的最后一个星期日,UTC时间1:00开始,当地时钟调慢1小时(切换回UTC+1时区)。

具体计算切换日期的步骤:

  1. 确定目标年份,找到该年份3月31日(3月的最后一天),向前推算至最近的星期日,即为当年进入夏令时的日期。
  2. 同理,找到该年份10月31日,向前推算至最近的星期日,即为当年退出夏令时的日期。
判断UTC时间戳是否处于欧盟DST生效状态

判断逻辑基于上述切换时间点,步骤如下:

  1. 将UTC时间戳转换为带UTC时区的日期时间对象,提取对应的年份。
  2. 计算该年份欧盟进入夏令时的UTC时间点(3月最后一个周日的1:00)和退出夏令时的UTC时间点(10月最后一个周日的1:00)。
  3. 对比给定时间戳:
    • 若时间戳落在进入点之后、退出点之前,则处于DST生效状态;
    • 否则处于非DST状态。

代码示例(Python)

import datetime

def is_eu_dst(utc_timestamp):
    # 将UTC时间戳转换为UTC时区的datetime对象
    utc_dt = datetime.datetime.fromtimestamp(utc_timestamp, datetime.timezone.utc)
    target_year = utc_dt.year
    
    # 计算当年3月最后一个周日的UTC 1:00
    march_candidate = datetime.datetime(target_year, 3, 31, 1, tzinfo=datetime.timezone.utc)
    while march_candidate.weekday() != 6:  # 6对应星期日
        march_candidate -= datetime.timedelta(days=1)
    
    # 计算当年10月最后一个周日的UTC 1:00
    oct_candidate = datetime.datetime(target_year, 10, 31, 1, tzinfo=datetime.timezone.utc)
    while oct_candidate.weekday() != 6:
        oct_candidate -= datetime.timedelta(days=1)
    
    # 判断时间戳是否在DST区间内
    return march_candidate <= utc_dt < oct_candidate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:15:55