2016-09-09 7 views
1

私は少し挑戦しています。VBScriptを使用して、別のタイムゾーン情報をローカルに取得します。

私はCET/CEST(西ヨーロッパ)のタイムゾーンに中央サーバを持っています。

BRT/BRST(ブラジル)タイムゾーンとKST(韓国)タイムゾーンで、このサーバーと他のコンピュータとの時差をいつでも知りたいと思います。

ファイアウォールの設定により、コンピュータまたはタイムサーバーに直接問い合わせることができなくなります。

私はWindowsの「追加クロック」機能を使用すると、いつでもどこでもDSTを考慮して時間を取得できるので、すべての情報はローカルで利用できると思います。

VBScriptで行う方法が課題です。

私は

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

でレジストリキーを読み取ることができますが、DSTを考慮していないようだということを見てきました。

これまで誰かがこのようなことを試みたことがあり、自分の発見を共有しようとしていますか? JosefZはPowerShellは非常に良いアイデアだった使用して、提案されたよう

はあなたの助け

マキシム

+2

でしたあなたのレバレッジ '.NET'フレームワーク[TimeZoneInfo.ConvertTime方法(日時、のTimeZoneInfo、のTimeZoneInfo)](https://msdn.microsoft.com/en-us/library/bb382770(V = VS。 110).aspx)Powershell? – JosefZ

答えて

1

をいただき、ありがとうございます。

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() 
関連する問題