使用VBScript

时间:2016-09-09 07:15:07

标签: datetime vbscript timezone

我有点挑战我希望得到你的帮助。

我有一个中央服务器,在CET / CEST(西欧)时区。

我想随时知道此服务器与其他计算机之间在BRT / BRST(巴西)时区和KST(韩国)时区的时差。

防火墙设置阻止我直接查询计算机或时间服务器。

我认为所有信息都可以在本地获取,因为当我使用Windows' Additional Clocks'功能,我可以在任何时区得到时间,在这里和那里占DST。

挑战在于如何在VBScript中实现。

我已经看到我可以在

读取注册表项
    \\HKEY_LOCAL_MACHINE\\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

但它似乎没有考虑到夏令时。

任何人都试图做这样的事情,并愿意分享他/她的发现吗?

感谢您的帮助

马克西姆

1 个答案:

答案 0 :(得分:2)

正如JosefZ所说,使用PowerShell是一个非常好的主意;

Dim PSCommand
Set Shell = CreateObject("Wscript.shell")

PSCommand = "powershell -command [String]$zone = 'Korea Standard Time';[TimeZoneInfo]$tz = [TimeZoneInfo]::FindSystemTimeZoneById($zone);[TimeZoneInfo]$local_tz = [TimeZoneInfo]::Local;[DateTimeOffset]$now = [DateTimeOffset]::UtcNow;[TimeSpan]$zone_offset = $tz.GetUtcOffset($now);[TimeSpan]$local_offset = $local_tz.GetUtcOffset($now);$diff = $zone_offset - $local_offset;$mydiff = $diff.Hours;Write-Host $mydiff"

Set Executor = Shell.Exec(PSCommand)
executor.StdIn.Close
wscript.echo executor.StdOut.ReadAll()