Googleスプレッドシートにデータを取り込んだとき、日付が次のような形式になっていることはありませんか?

2025-11-03T11:34:40+09:00

この形式は、APIや外部サービスから取得したデータなどでよく使われる日時の表記です。

そのままでは見づらかったり、日付として正しく認識されず、並べ替えや日付の計算がうまくできなかったりすることがあります。

この記事では、Googleスプレッドシートで、このような日時を普通の日付や日時に変換する方法を紹介します。

APIから取り込んだ日時データがそのままでは扱いにくいイメージ

1. 日付だけに変換する方法

元のデータがセルA1に入っているとします。

2025-11-03T11:34:40+09:00

日付部分だけを取り出したい場合は、次の数式を使います。

=DATEVALUE(LEFT(A1,10))

これで、日付部分の2025-11-03を日付データとして取得できます。

ただし、セルの表示形式によっては、日付ではなく数値で表示される場合があります。

その場合は、変換したセルを選択して、メニューから「表示形式」→「数字」→「日付」を選択してください。これで、次のように表示できます。

2025/11/03

2. 日付と時刻の両方を変換する方法

日付だけでなく、時刻も残したい場合は、次の数式を使います。

=DATEVALUE(LEFT(A1,10))+TIMEVALUE(MID(A1,12,8))

この数式では、次のように処理しています。

  • LEFT(A1,10):先頭から10文字を取り出して日付部分を取得
  • MID(A1,12,8):12文字目から8文字を取り出して時刻部分を取得
  • DATEVALUE:日付文字列を日付データに変換
  • TIMEVALUE:時刻文字列を時刻データに変換
2025-11-03T11:34:40+09:00をLEFTとMIDで日付・時刻・時差に分解した図

変換後の表示形式を「日時」に設定すると、次のように表示できます。

2025/11/03 11:34:40

3. 複数の行をまとめて変換する方法

A列に日時データが複数入っている場合は、B1に次の数式を入力します。

=ARRAYFORMULA(IF(A1:A="","",DATEVALUE(LEFT(A1:A,10))))

A列の各行に対応する日付が、B列にまとめて表示されます。

日付と時刻の両方を変換する場合は、次の数式を使います。

=ARRAYFORMULA(IF(A1:A="","",DATEVALUE(LEFT(A1:A,10))+TIMEVALUE(MID(A1:A,12,8))))

1行目に「created_at」などの見出しが入っている場合は、見出しまで変換しようとしてエラーになります。その場合は2行目から始めて、B2に次のように入力します。

=ARRAYFORMULA(IF(A2:A="","",DATEVALUE(LEFT(A2:A,10))+TIMEVALUE(MID(A2:A,12,8))))

また、ARRAYFORMULAは結果を下の行まで自動で広げるため、B列の下のセルにすでに値が入っていると#REF!エラーになります。B列は空けておきましょう。

なお、変換結果は数式によって表示されるため、元データを削除する場合や、変換結果を確定させたい場合は注意してください。

変換結果をコピーし、「編集」→「特殊貼り付け」→「値のみ貼り付け」を選ぶと、数式ではなく値として保存できます。

4. 「+09:00」はどう扱えばいい?

元データの末尾にある+09:00は、UTC(協定世界時)からの時差を表しています。

日本標準時(JST)はUTCより9時間進んでいるため、+09:00は日本時間を示しています。

今回の数式では、文字列から日付と時刻の部分だけを取り出しているため、末尾のタイムゾーン情報は計算に使っていません。

元データが日本時間であれば、この方法で日付と時刻を取り出せます。

ただし、異なるタイムゾーンのデータが混在している場合は注意が必要です。タイムゾーンを考慮して時刻を統一したい場合は、単純に文字列を切り出すのではなく、タイムゾーンに応じた変換処理が必要になります。

参考:時差を考慮して日本時間にそろえる

例えば2025-11-03T02:34:40+00:00(UTC)や2025-11-02T21:34:40-05:00のように、時差がバラバラのデータを日本時間にそろえたい場合は、次の数式が使えます。

=DATEVALUE(LEFT(A1,10))+TIMEVALUE(MID(A1,12,8))-IF(MID(A1,20,1)="-",-1,1)*(MID(A1,21,2)+MID(A1,24,2)/60)/24+9/24

末尾の時差を読み取っていったんUTCに戻し、そこに日本時間の9時間を足しています。上の2つの例は、どちらも2025/11/03 11:34:40になります。日付をまたぐ場合も自動で調整されます。

ただし、この数式は「+09:00」のように末尾が「±hh:mm」の形式のデータ向けです。末尾がZのデータや、11:34:40.123のように秒に小数が付くデータは文字の位置が変わるため、そのままでは使えません。

まとめ

Googleスプレッドシートで2025-11-03T11:34:40+09:00のような日時を変換する場合は、目的に合わせて数式を使い分けましょう。

  • 日付だけにしたい: =DATEVALUE(LEFT(A1,10))
  • 日付と時刻を残したい: =DATEVALUE(LEFT(A1,10))+TIMEVALUE(MID(A1,12,8))
  • 複数行をまとめて変換したい: ARRAYFORMULA を使う
目的別:Googleスプレッドシートで日時を変換する数式の早見表

APIや外部サービスから取得した日時データも、適切に変換すれば、Googleスプレッドシート上で並べ替えや集計に利用しやすくなります。

あわせて読みたい