0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

エクセルでUTC時刻をJST時刻へ変換する方法(関数とVBA)

Last updated at Posted at 2021-09-19

はじめに

あるテーブルのデータをエクセルに貼り付けて調査をしていた時に、UTC時刻で登録されており分かりにくかったためJST時刻へ変換しました。
関数とVBAでのやり方を残したいと思います。

関数

=DATEVALUE(MIDB(A1,1,10))+TIMEVALUE(MIDB(A1,12,8))+TIME(9,0,0)

A1にUTC時刻の文字列が入力されている場合の関数です。
必要に応じて「A1]部分を変更してください。

以下のような仕組みです。

  1. 日付部分を日付として取得する(DATEVALUE(MIDB(A1,1,10)))
  2. 時刻部分を時刻として取得する(TIMEVALUE(MIDB(A1,12,8)))
  3. 時刻を+9加算する
  4. 日付に時刻を加算する

20210919.jpg

B2のように、日付を跨ぐ場合でもしっかりと変換されています。

VBA

'UTC時刻の文字列をJTC時刻へ変換してDate型で返す
'
'@param utc UTC時刻の文字列
'@return jtcDateTime Date型のJTC時刻
Function ConvertUTCToJTC(ByVal utc As String) As Date

    Dim utcDate As String
    utcDate = Left(utc, 10)
    
    Dim utcTime As String
    utcTime = Mid(utc, 12, 8)
    
    Dim jtcDateTime As Date
    jtcDateTime = utcDate & " " & utcTime
    jtcDateTime = DateAdd("h", 9, jtcDateTime)

    ConvertUTCToJTC = jtcDateTime
End Function
実行サンプル
Sub ConvertUTCToJTCTest()

    Debug.Print ConvertUTCToJTC("2021-08-10T10:00:00Z")
    Debug.Print ConvertUTCToJTC("2021-08-10T22:00:00Z")

End Sub
実行サンプル結果
2021/08/10 19:00:00 
2021/08/11 7:00:00 

引数の文字列型のUTC時刻をJTC時刻へ変換してDate型で返します。
関数とほぼ同じ仕組みです。

  1. 日付部分を文字列で取得する
  2. 時刻部分を文字列で取得する
  3. 1と2で取得した日時からDate型の値を作成する
  4. 3で作成したDate型に9時間加算する

参考

[Excel] 協定世界時(UTC)を日本標準時(JST)に変換する計算式
DateAdd 関数

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?