コンピュータで時間を表示する方法は色々あります。
しかし、大体の場合、コンピュータのシステムから取得できる時間は、国際標準時(UTC)だったり、ISO8601やUNIX時間など、IT関連の仕事に関係していない人にはなかなかつらい表示だったりします。
この度、自分の仕事でISO8601表示の時間を日本標準時(JST)に変換しなければならなくなったので、EXCELを使ってISO8601表示された時刻を日本時間に変換する方法をまとめました。
構文の書き方
ISO8601による時間表記が「YYYY-MM-DDThh:mm:ssZ」である場合の構文はこちらです。
セル上で右クリック⇒[セルの書式設定]から[表示形式]を「日付」のなかからお好みの形式を選んでください。
何もせずにこの式を入れると、「8:45 PM」のような表示になります。
使用するEXCEL関数
数式で使われている関数はそれぞれ次の通りです。
DATEVALUE
文字列で表された日付をExcelが日付として認識できるシリアル値(数値)に変換します。
TIMEVALUE
文字列で表された時刻をExcelが時刻として認識できるシリアル値に変換します。
MIDB
文字列の任意の位置から指定されたバイト数の文字を返します。
MID 関数、MIDB 関数 – Microsoft サポート
TIME
指定した時刻をExcelが時刻として認識できる小数として返します。
カッコ内の1番目は時、2番目は分、3番目は秒を指定します。
この関数を挿入する前のセルの表示形式が [標準] であった場合、結果は日付形式になります。
例えば、TIME(13,0,0)を挿入すると「3:00PM」を返します。
解説
この構文は日付と時間をExcelが認識できる数値(シリアル値)に変換し、そこへ時差分を足して日本標準時に修正しています。
ポイントとなる関数は「MIDB」です。
MIDB(A1,1,10)のカッコ内の数(引数)の意味は前から順に
1番目:セルA1の文字列を読み込む
2番目:1番目の数で指定した文字列から取り出したい文字列の開始位置を指示する
3番目:取り出したい文字列のバイト数を指示する
となっています。
2番目の数字を「1」とすると文字列の先頭から引用されます。
A1セルのISO8601時刻表示が「2024-03-13T08:45:32Z」の場合、MIDB(A1,1,10)とMIDB(A1,12,8)で取り出せる文字列は以下の通りです。
2024-03-13T08:45:32Z
MIDB(A1,1,10)⇒文字列先頭から10文字「2024-03-13」
MIDB(A1,12,8)⇒文字列12文字目から8文字「08:45:32」
実行結果はこの通りです。
参照元
先人の知恵に感謝します。
コメント