Vba 查找两个时间戳之间的DST时间戳

Vba 查找两个时间戳之间的DST时间戳,vba,windows,Vba,Windows,有没有办法知道所有DST调整时间戳和两个时间戳之间的偏移量? 如果有多个DST调整,我希望所有实例都有时间戳和偏移量。这里的偏差是指,若时钟向前移动1小时,偏移量=60,若时钟向后移动1小时,偏移量=60 例如 Time Zone: Pacific Time (UTC -8:00) Start Time: 1 Nov 2020 0:00:00 End Time: 4 Nov 2020 0:00:00 Result: 1 Nov 2020 2:00:00 And Offset of -60 Min

有没有办法知道所有DST调整时间戳和两个时间戳之间的偏移量? 如果有多个DST调整,我希望所有实例都有时间戳和偏移量。这里的偏差是指,若时钟向前移动1小时,偏移量=60,若时钟向后移动1小时,偏移量=60

例如

Time Zone: Pacific Time (UTC -8:00)
Start Time: 1 Nov 2020 0:00:00
End Time: 4 Nov 2020 0:00:00
Result: 1 Nov 2020 2:00:00 And Offset of -60 Minutes
您可以从我的项目中使用下面的函数BiasWindowsTimezone:

开始时间=2020/11/01 00:00:00 结束时间=2020/11/04 00:00:00 BiasDiff=BiasWindowsTimezonePacific,True,开始时间-BiasWindowsTimezonePacific,True,结束时间 BiasDiff->-60 包括Excel和Access的演示应用程序。如果运行Excel应用程序,请确保首先调用函数ReloadTimezones来创建包含数据的工作表

'从返回Windows中指定的时区偏差 '注册表中时区项的名称项。 '接受没有公共尾随标准时间的值。 ' '如果Dst为真,且当前日期在夏令时内, '返回夏令时的偏差。 '如果指定日期1,则返回该日期的偏差。 ' '如果未找到时区,则返回零偏差。 ' 例如: 'Bias=biaswindowstimezone阿根廷 找到“偏差->180” ' 'Bias=biaswindowstimezone阿根廷标准时间 找到“偏差->180”。 ' 'Bias=BiasWindowsTimezoneGermany 未找到“偏差->0”。 ' 'Bias=biaswindowstimezone西欧 未找到“偏差->0”。 ' 'Bias=BiasWindowsTimezoneW。欧洲 发现“偏差->-60”。 ' 'Bias=biaswindowstimezone巴拉圭,真实,2018-07-07 找到“偏差->240”。 ' 'Bias=biaswindowstimezone巴拉圭,真实,2018-02-11 找到“偏差->180”。DST。 ' 'Bias=biaswindowstimezone巴拉圭,假,2018-02-11 找到“偏差->240”。 ' ' 2018-11-16. 古斯塔夫·布罗克。仙人掌数据ApS,CPH。 ' 公共职能部门_ ByVal TimezoneName作为字符串_ 可选Dst作为布尔值_ 可选日期1作为日期_ 只要 作为时区尝试的静态条目 静态LastName作为字符串 去年的静态数据为整数 作为时区尝试的静态条目 将此名称设置为字符串 今年是整数 Dim StandardDate作为日期 暗淡的日光日期作为日期 暗淡的德尔塔比亚斯 模糊的偏见 如果TrimTimezoneName=则 “没什么可看的。 退出功能 其他的 ThisName=TrimTimezoneName ThisYear=YearDate1 如果LastName=ThisName,LastYear=ThisYear,则 '使用缓存数据。 其他的 '检索单个条目,如果未找到,则检索空条目。 Entries=RegistryTimezoneItemsThisName,今年 Entry=EntriesLBoundEntries LastName=ThisName 去年=今年 如果结束 如果_ StrCompEntry.Name、TimezoneName、vbTextCompare=0或_ StrCompReplaceEntry.Name、StandardTimeLabel、TimezoneName、vbTextCompare=0 '找到Windows时区。 默认值是标准偏差。 DeltaBias=Entry.Tzi.StandardBias 如果Dst=True,则 '如果Date1是夏令时,则返回日光偏差。 StandardDate=DateSystemTimeEntry.Tzi.StandardDate DaylightDate=DateSystemTimeEntry.Tzi.DaylightDate 如果DaylightDate<标准日期,则 “北半球。 如果DateDiff,DaylightDate,Date1>=0,DateDiff,Date1,StandardDate>0,则 “白天。 DeltaBias=Entry.Tzi.DaylightBias 其他的 “标准时间。 如果结束 其他的 “南半球。 如果DateDiff、DaylightDate、Date1>=0或DateDiff、Date1、StandardDate>0,则 “白天。 DeltaBias=Entry.Tzi.DaylightBias 其他的 “标准时间。 如果结束 如果结束 如果结束 '计算总偏差。 偏差=输入。偏差+增量 如果结束 如果结束 BiasWindowsTimezone=偏差 端函数
Google vba dst调整,带你去。@HansPassant这只针对当前日期,如果我想使用这种方法,我必须在开始时间和结束时间之间迭代所有天。