VBA共通:VBAでUTC日時値を表す文字列を日本の標準時(JST)に変換した上で日付型に変換するサンプルプログラム(ユーザー定義関数)

Excel

UTC(協定世界時)日時値を表す文字列、例えば「20150731055917.000000-000」を日本の標準時(JST)に直した上で日付型のデータに変換するユーザー定義関数を覚書。

例えば「20150731055917.000000-000」を日本の標準時に直す場合UTC日時 + 9時間なので実際には、2015/7/31 14:59:17になる。

WMIオブジェクトを使ったプログラムを作った時に作ったユーザー定義関数で、せっかくだから覚書きしておきます。

UTC日時値を標準時間に直して日付型に変換するプログラムの概要

UTC日時が何であるかとか、今回の逆のパターン(標準時間をUTC日時値に変換)については、以下の記事を参考にしてください。

これから書く予定の記事でVBAのプログラム中で通常の日付時刻(日本の標準時:JST)の値をUTC(Coordinated Univers...

今回作成するサンプルプログラムは、以下の記事を応用したものです。

日付時刻がYYYYMMDDhhmmss形式で表された文字列を日付型のデータ(YYYY/MM/DD HH:MM:SS)に変換するVBAのサ...

処理の考え方は以下のとおり。

UTC日時値を表す文字列を文字列操作関数を使用して年、月、日、時、分、秒にバラして用意しておいた変数に代入する。

年、月、日、時、分、秒が代入された変数を日付の区切り”/”と時刻の区切り”:”と結合して日本の日付時刻表示形式の文字列に作り直す。

作り直した文字列をCDate関数を使って日付型に変換する。

日付型に変換された値に9時間加算する。
※UTC日時を日本の標準時間に直す場合は単純に9時間加算すれば良いだけです。

UTC日時値を標準時間に直して日付型に変換するVBAサンプルプログラム

何度も使われる場合を考えてユーザー定義関数として作成しています。

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

以下にVBAのプログラムの中で上記ユーザー定義関数を呼び出して使用するサンプルプログラムを記載します。

UTC日時値を日本の標準時に変換するVBAのサンプルプログラムまとめ

今回紹介したサンプルプログラムは、別の記事で作成したサンプルプログラムの処理の中で単に9時間加算しているだけです。

日付時刻がYYYYMMDDhhmmss形式で表された文字列を日付型のデータ(YYYY/MM/DD HH:MM:SS)に変換するVBAのサ...

その記事の中に含めてしまおうかとも思ったけれど、探しにくくなると嫌なので単独の記事として作成しました。

Excelであればワークシート関数としても使えます。

もちろんAccessのクエリーの式に指定して使うこともできます。

連続してUTC日時値がらみの記事を書いたのは、別記事として書く予定のWindowsのイベントログをExcelとかAccessに出力するプログラムで使ったためです。

そっちに全部載せると長くなって読みづらいし、メインの内容が薄れてしまうので…