VBScript:将日期/时间从指定时区转换为UTC

时间:2016-11-03 15:00:38

标签: vbscript timezone

首先,不要混淆;这是 NOT 要求从当前时区转换为UTC。完全没有。

我需要的是将提供的时区(例如"太平洋标准时间")转换为UTC。

转换必须考虑所提供日期的夏令时偏移量。

例如,如果我在太平洋标准时间进入03/10/2016下午6:00,它必须在04/10/2016凌晨1:00返回,因为在该日期时区偏移为-7小时。

我已经在互联网上搜索过这个并且找不到任何东西。如果这是一种不同的语言,它不会成为一个问题,但VBScript似乎非常有限。

我想避免使用第三方库,并尽可能坚持使用标准的MS提供的对象。

请告知。

2 个答案:

答案 0 :(得分:0)

使用vbscript很困难。您可以通过解析TZutil.exe的输出来获取TimeZone信息(标准偏移),但如果DST在特定日期生效,则不会为您提供DST-Bias和信息。您可以在vbscript中执行wmi查询,这将返回该信息,但仅针对当前pc的活动时区。信息位于窗口中,但我不知道通过vbscript获取它们的方法。

另一方面,Powershell公开了大部分数据。我不知道DST在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