ローカル時刻から協定世界時(UTC)を取得する方法を以下に記します。
PS C:\> $PSVersionTable.PSVersion.ToString() 5.1.19041.1682
Get-Dateコマンドレット により現在日時の DateTime オブジェクトを取得し、ToUniversalTimeメソッドにより、UTCの時刻を取得しています。
ローカル時間はJSTなので-9時間されているのが確認できます。
PS C:\> Get-Date ; (Get-Date).ToUniversalTime() 2022年11月22日 20:21:30 2022年11月22日 11:21:30
PS C:\> (Get-Date("2022/11/22 09:00:00")).ToUniversalTime().ToString("yyyy/MM/dd HH:mm:ss") 2022/11/22 00:00:00
また、以下のように出力フォーマットを指定することなどできます。
出力フォーマット指定の例を以下に記します。
PS C:\> Get-Date -Format "yyyy/MM/dd HH:mm K" 2022/11/22 20:38 +09:00
PS C:\> (Get-Date).ToString("yyyy/MM/dd HH:mm K") 2022/11/22 20:38 +09:00
PS C:\> (Get-Date).ToUniversalTime().ToString("yyyy/MM/dd HH:mm K") 2022/11/22 11:39 Z
ローカルのタイムゾーンが日本(JST-9)で、ToUniversalTimeメソッドによりKindがUtcになっているのが確認できます。
PS C:\> Get-TimeZone | Format-Table Id DisplayName StandardName DaylightName BaseUtcOffset SupportsDaylightSavingTime -- ----------- ------------ ------------ ------------- -------------------------- Tokyo Standard Time (UTC+09:00) 大阪、札幌、東京 東京 (標準時) 東京 (夏時間) 09:00:00 False
PS C:\> Get-Date | Format-Table DisplayHint Date Day DayOfWeek DayOfYear Hour Kind Millisecond Minute Month ----------- ---- --- --------- --------- ---- ---- ----------- ------ ----- DateTime 2022/11/22 0:00:00 22 Tuesday 326 20 Local 642 32 11
PS C:\> (Get-Date).ToUniversalTime() | Format-Table Date Day DayOfWeek DayOfYear Hour Kind Millisecond Minute Month Second ---- --- --------- --------- ---- ---- ----------- ------ ----- ------ 2022/11/22 0:00:00 22 Tuesday 326 11 Utc 309 32 11 33
以上、PowerShellでUTC日時を求める方法でした。