VBA共通:VBAで日付時刻(日本の標準時:JST)をUTC日時値に変換するサンプルプログラム

VBA共通:VBAで日付時刻(日本の標準時:JST)をUTC日時値に変換するサンプルプログラム

これから書く予定の記事でVBAのプログラム中で通常の日付時刻(日本の標準時:JST)の値をUTC(Coordinated Universal Time:協定世界時)日時値に変換する処理が必要だったので、その方法について覚書きしておきます。

逆のパターンについては、「VBA共通:VBAでUTC日時値を表す文字列を日本の標準時(JST)に変換した上で日付型に変換するサンプルプログラム(ユーザー定義関数)」を参照してください。

スポンサーリンク

UTC日時とは

UTCとは、Coordinated Universal Time の略で全世界で時刻を記録する際に使われる公式な時刻のことです。

原子時計を元にしてるそうです。

日本の標準時は、UTC日時に+9:00した時刻となっています。

VBAで日本の標準時をUTC日時値に変更する方法

VBAで日本の標準時をUTC日時値に変更する場合、「WbemScripting.SWbemDateTime」オブジェクトのインスタンスを作成し、「SetVarDate」メソッドを呼び出してUTC日時値に変換します。

「SetVarDate」メソッドを呼び出す際に変換したい日本の標準時の値(Date型)を指定します。

VBAで日本の標準時をUTC日時値に変更するサンプルプログラム

以下日本の標準時をUTC日時値に変換するサンプルプログラム。

ExcelでもAccessでも使用できます。

VBAサンプルプログラム1

以下のサンプルは、日本の標準時 2015/07/31 09:00:00 をUTC日時値に変換するサンプルです。

Sub CUTCDate()
Dim utcStartDate As Object, StartDate As Date
Set utcStartDate = CreateObject("WbemScripting.SWbemDateTime")
StartDate = CDate("2015/07/31 09:00:00")
utcStartDate.SetVarDate StartDate, True
MsgBox utcStartDate
End Sub

VBAサンプルプログラム2

サンプルプログラム1だと汎用性がないので、引数として変換したい日本の標準時の値を受け取ってUTC日時値に変換した値を返すユーザー定義関数に変更した場合のサンプルプログラムです。

以下のサンプルは、日本の標準時 2015/07/31 09:00:00 をUTC日時値に変換するサンプルです。

Function GetUTCDate(StartDate As Date)
Dim utcStartDate As Object
Set utcStartDate = CreateObject("WbemScripting.SWbemDateTime")
utcStartDate.SetVarDate StartDate, True
GetUTCDate = utcStartDate
End Function

作成したユーザー定義関数の使用例

上記サンプルユーザー定義関数を使用する場合は、以下のように記載します。

VBAのプログラムから作成したユーザー定義関数を呼び出して使用するサンプルプログラム。

Sub Sample01()
Dim utcDate
utcDate = GetUTCDate("2015/07/31 11:50")
MsgBox utcDate
utcDate = GetUTCDate(Now())
MsgBox utcDate
End Sub

Excelだったらワークシート関数としても使用できます。

VBAで日付時刻(日本の標準時)をUTC日時値に変換する方法まとめ

日本の標準時の値をUTC日時値に変換するなんてあまり一般的には使いませんが、別のプログラムを作った時に必要だったので別記事として書きました。

「WbemScripting.SWbemDateTime」オブジェクトのインスタンスを作成し、「SetVarDate」メソッドを呼び出す方法でなくても単に文字列操作でもできそうな気もします。

別の記事で逆の変換、UTC日時値を日本の標準時の値に変換する方法も紹介する予定です。

コメント

タイトルとURLをコピーしました