2016-09-09 2 views
1

У меня есть небольшой вызов, с которым мне нужна ваша помощь.Получить другую информацию о часовом поясе, локально, используя VBScript

У меня есть центральный сервер в часовом поясе CET/CEST (Западная Европа).

Я хотел бы знать, в любой момент, разницу во времени между этим сервером и другими компьютерами в часовом поясе BRT/BRST (Бразилия) и часовой пояс KST (Корея).

Настройки брандмауэра не позволяют мне напрямую обращаться к компьютерам или к серверу времени.

Я думаю, что вся информация доступна локально, так как, когда я использую функцию «Дополнительные часы» Windows, я могу получить время в любом часовом поясе, учитывая DST как здесь, так и там.

Задача состоит в том, как это сделать в VBScript.

Я видел, что я могу читать ключи реестра в

\\HKEY_LOCAL_MACHINE\\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones 

но это, кажется, не учитывает DST.

Как кто-либо когда-либо пытался сделать что-то подобное и готов поделиться своими открытиями?

Спасибо за вашу помощь

Maxime

+2

Могли бы вы рычагов '.NET' Framework [TimeZoneInfo.ConvertTime метод (DateTime, TimeZoneInfo, TimeZoneInfo)] (https://msdn.microsoft.com/en-us/library/bb382770 (v = против. 110) .aspx) в Powershell? – JosefZ

ответ

1

Как предложено 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() 
Смежные вопросы