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

Access 2010如何获取3月和10月的最后一个周日?

解决Access 2010中BST到GMT的日期转换问题

我来帮你搞定这个问题!英国夏令时(BST)和格林尼治标准时间(GMT)的切换规则是固定的:3月最后一个周日凌晨1点(GMT)开始转BST,10月最后一个周日凌晨1点(GMT)转回GMT。我们可以用Access VBA写几个函数来自动计算这两个关键时间点,再完成日期转换。

第一步:编写计算BST切换时间的函数

先打开Access的VBA编辑器(按Alt+F11),插入一个新模块,添加下面两个函数,用来获取指定年份的BST开始和结束时间(都是GMT时间):

获取BST开始时间(GMT)

Function GetBSTStart(intYear As Integer) As Date
    ' 计算3月最后一个周日的凌晨1点(GMT)
    Dim dtLastSunMar As Date
    ' 先取3月31日,再往前推到最近的周日
    dtLastSunMar = DateSerial(intYear, 3, 31) - (Weekday(DateSerial(intYear, 3, 31), vbSunday) - 1)
    ' 加上1小时,得到BST开始的GMT时间点
    GetBSTStart = dtLastSunMar + TimeSerial(1, 0, 0)
End Function

获取BST结束时间(GMT)

Function GetBSTEnd(intYear As Integer) As Date
    ' 计算10月最后一个周日的凌晨1点(GMT)
    Dim dtLastSunOct As Date
    ' 先取10月31日,再往前推到最近的周日
    dtLastSunOct = DateSerial(intYear, 10, 31) - (Weekday(DateSerial(intYear, 10, 31), vbSunday) - 1)
    ' 加上1小时,得到BST结束的GMT时间点
    GetBSTEnd = dtLastSunOct + TimeSerial(1, 0, 0)
End Function

第二步:写核心的GMT转换函数

接下来是主函数,它会判断你的输入日期是否处于BST时段,然后自动转换:

Function ConvertToGMT(dtInput As Date) As Date
    Dim intYear As Integer
    Dim dtBSTStart As Date
    Dim dtBSTEnd As Date
    
    intYear = Year(dtInput)
    dtBSTStart = GetBSTStart(intYear)
    dtBSTEnd = GetBSTEnd(intYear)
    
    ' 判断逻辑:如果输入时间在BST开始之后、结束之前,就减1小时转GMT;否则直接返回
    ' 注意:10月最后一个周日凌晨1点及之后已经是GMT,所以不用减
    If dtInput >= dtBSTStart And dtInput < dtBSTEnd Then
        ConvertToGMT = dtInput - TimeSerial(1, 0, 0)
    Else
        ConvertToGMT = dtInput
    End If
End Function

第三步:在Access里使用这个函数

你可以在多个场景用它:

  • 查询中:添加一个计算字段,比如 GMT日期: ConvertToGMT([你的日期字段名]),运行查询就能得到转换后的GMT日期
  • VBA代码里:直接调用,比如 Dim myGMTdate As Date: myGMTdate = ConvertToGMT(Now())
  • 窗体/报表:绑定控件的数据源可以设置为这个函数,实时转换显示

小提示

  • 如果你的日期字段只有日期(时间部分为0:00),转换逻辑依然有效:比如3月最后一个周日当天0:00属于GMT,1:00及之后属于BST,转换后会自动减1小时
  • 跨年份的日期也不用操心,函数会自动获取对应年份的BST切换时间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:22:47