Vba 查找两个时间戳之间的DST时间戳
有没有办法知道所有DST调整时间戳和两个时间戳之间的偏移量? 如果有多个DST调整,我希望所有实例都有时间戳和偏移量。这里的偏差是指,若时钟向前移动1小时,偏移量=60,若时钟向后移动1小时,偏移量=60 例如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
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这只针对当前日期,如果我想使用这种方法,我必须在开始时间和结束时间之间迭代所有天。