#author("2022-11-22T20:47:41+09:00","","") #navi(../) * PowerShellで日時をUTC(Coordinated Universal Time)に変換する [#xd50678b] ローカル時刻から協定世界時(UTC)を取得する方法を以下に記します。 #contents * 動作確認環境 [#nad6ddc9] - Windows 10 ver.22H2 - PowerShell PS C:\> $PSVersionTable.PSVersion.ToString() 5.1.19041.1682 * 関連記事 [#pd56f456] -[[Get-Dateコマンドレットで前日、翌日、前月、翌月などの日付を取得する方法>PowerShell/Get-Dateで前日、翌日、前月、翌月などの日付を取得する方法]] -[[本日が月末かどうかを判定するスクリプト>PowerShell/本日が月末かどうかを判定するスクリプト]] -[[PowerShellで文字列の日時をDateTimeオブジェクトにする方法>PowerShell/文字列の日時をDateTimeオブジェクトにする方法]] -[[PowerShellで当日・指定日付の曜日を取得する方法>PowerShell/当日・指定日付の曜日を取得する方法]] -[[PowerShellでUNIXTIMEを取得する方法>PowerShell/UNIXTIMEを取得する方法]] -[[PowerShellでUNIXTIMEから通常の日時に変換する方法>PowerShell/UNIXTIMEから通常の日時に変換する方法]] * DateTime.ToUniversalTimeメソッドで変換 [#f0c172c8] [[Get-Dateコマンドレット>https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/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 ** 出力フォーマット指定 [#bb721031] また、以下のように出力フォーマットを指定することなどできます。~ 出力フォーマット指定の例を以下に記します。 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 ** オブジェクト内の値確認 [#rae6de42] ローカルのタイムゾーンが日本(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日時を求める方法でした。