首先,不要混淆;这是 NOT 要求从当前时区转换为UTC。完全没有。
我需要的是将提供的时区(例如"太平洋标准时间")转换为UTC。
转换必须考虑所提供日期的夏令时偏移量。
例如,如果我在太平洋标准时间进入03/10/2016下午6:00,它必须在04/10/2016凌晨1:00返回,因为在该日期时区偏移为-7小时。
我已经在互联网上搜索过这个并且找不到任何东西。如果这是一种不同的语言,它不会成为一个问题,但VBScript似乎非常有限。
我想避免使用第三方库,并尽可能坚持使用标准的MS提供的对象。
请告知。
答案 0 :(得分:0)
使用vbscript很困难。您可以通过解析TZutil.exe
的输出来获取TimeZone信息(标准偏移),但如果DST在特定日期生效,则不会为您提供DST-Bias和信息。您可以在vbscript中执行wmi查询,这将返回该信息,但仅针对当前pc的活动时区。信息位于窗口中,但我不知道通过vbscript获取它们的方法。
Pacific Standard Time
结束的日期,但是Powershel / .Net确实如此。请参阅在PoSh控制台中输入的这些行:
> $PacificDateTime = Get-Date "2016/11/05 11:00:00"
> [TimeZoneInfo]::ConvertTimeBySystemTimeZoneId(($PacificDateTime),'Pacific Standard Time','UTC')
Freitag, 5. November 2016 18:00:00
> $PacificDateTime = Get-Date "2016/11/15 11:00:00"
> [TimeZoneInfo]::ConvertTimeBySystemTimeZoneId(($PacificDateTime),'Pacific Standard Time','UTC')
Dienstag, 15. November 2016 19:00:00
第一个日期的时差为-7h,而通常为-8h,因此DST有效。提前10天的第二个日期有一个-8h的差异所以我想这个开关是平均时间。这很容易转换为功能。但我会给你留下一些工作。
答案 1 :(得分:0)
嗯,最后VBScript没有提供所需的功能。所以我必须在Web API上实现它并从我的本地程序调用它。我使用的TimeZoneInfo.ConvertTimeToUtc()完全符合我的需要。然后我这样打电话:https://stackoverflow.com/a/22328840/442512