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



首先,不要混淆;这是NOT请求从当前时区转换为UTC。一点也不。

我需要的是转换从一个提供的时区名称(例如;"太平洋标准时间")到UTC。

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

例如,如果我输入03/10/2016 6:00 PM太平洋标准时间,它必须返回04/10/2016 1:00 AM,因为在那个日期时区偏移量是-7小时。

我已经在网上上下搜索了这个,找不到任何东西。如果这是一个不同的语言,这不会是一个问题,但VBScript似乎相当有限。

我希望避免使用第三方库,如果可能的话,坚持使用ms提供的标准对象。

请建议。

使用vbscript很难。您可以通过解析TZutil.exe的输出来获得时区信息(标准偏移量),但这既不会给您DST偏差,也不会给您DST是否在特定日期生效的信息。您可以在vbscript中执行wmi查询,这将返回该信息,但仅针对当前pc的活动时区。信息位于窗口,但我不知道如何通过vbscript获得它们。

另一方面,Powershell暴露了很多这样的数据。我不知道夏令时在Pacific Standard Time结束的日期,但powershell/。净。查看在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

第一个日期的时差为-7小时,而正常情况下是-8小时,因此夏令时生效。10天前的第二次约会有8小时的差别,所以我猜切换是在同一时间。这可以很容易地转换为函数。但是我要把一些工作留给你。

最后,VBScript没有提供所需的功能。所以我必须在一个Web API上实现它,并从我的本地程序调用它。我使用了timezoneinfo . converttimemetoutc(),它完全满足了我的需求。然后我这样命名它:https://stackoverflow.com/a/22328840/442512

相关内容

  • 没有找到相关文章

最新更新