UTC時刻とJST時刻を変換する方法を紹介します。以前記事でUTC時刻を取得する方法を紹介しました。少し応用するのみです。
WbemScripting.SWbemDateTimeで解決する
UTC時刻を取得した時と同様にWbemScripting.SWbemDateTimeを利用します。時刻取得時にGetVarDateの引数(True/False)で、ローカル時刻取得かUTC時刻取得かを選択できました。
時刻設定時も引数(True/False)で、ローカル時刻設定かUTC時刻設定かを選択できます。GetVarDate (True/False)、SetVarDate(True/False)の4パタンを組み合わせることで、UTC時刻とJST時刻の変換が可能となります。
サンプルプログラムを確認する(コピペOK)
Option Explicit
Sub sample()
Dim wmDate As Object
Set wmDate = CreateObject("WbemScripting.SWbemDateTime")
Dim d As Date
d = #7/3/2022 2:00:00 AM#
' ローカル時刻として設定し、ローカル時刻として出力
wmDate.SetVarDate d, True
Debug.Print Format(wmDate.GetVarDate(True), "yyyy/mm/dd hh:nn:ss") ' 2022/07/03 02:00:00
' ローカル時刻として設定し、ローカル時刻として出力
wmDate.SetVarDate d, True
Debug.Print Format(wmDate.GetVarDate(False), "yyyy/mm/dd hh:nn:ss") ' 2022/07/02 17:00:00
' UTC時刻として設定し、ローカル時刻として出力
wmDate.SetVarDate d, False
Debug.Print Format(wmDate.GetVarDate(True), "yyyy/mm/dd hh:nn:ss") ' 2022/07/03 11:00:00
' UTC時刻として設定し、UTC時刻として出力
wmDate.SetVarDate d, False
Debug.Print Format(wmDate.GetVarDate(False), "yyyy/mm/dd hh:nn:ss") ' 2022/07/03 02:00:00
End Sub