Excel形式の日時をUnix時間に変換する式

Excel形式の日時とは

Excel形式の日時とは、Excelによる日時の表現形式のことだ。
ここでは下図のような形式のセル値のことを指している。

Excelは、日時を「シリアル値」という数値で管理しているのだが、セルの書式を「日付」や「時刻」にしておくと、規定の日時フォーマットに従って出力されるようになる。

シリアル値とは

シリアル値とは、1900年1月1日を1として、以後24時間経過するごとに1を加えていく方法で日時を表現する方式だ。
一日に満たない時間単位は、小数を使って表現する。
マイクロソフト独自の日時表現方式で、Excelで採用されている。

Unix時間とは

Unix時間とは、1970年1月1日の0時0分0秒からの経過秒数で表した時間表記のことだ。
時刻を表す場合には、Unix時刻ともいう。
Unix系のシステムで、広く採用されている表現方式だ。

シリアル値をUnix時間に変換するには

結論を先に書いてしまおう。
セルA1にExcel形式の日時が入力されている場合は、以下のような式でUnix時間を取得することができる。

=((A1 – 25569) * 86400) – 32400

この式を、セルB1に入力した例は、以下の通りとなる。

式の意味について

以下は、式の意味が知りたい人向けの解説となる。

25569とは

これは、1970年1月1日 0時0分0秒のシリアル値を表している。
すなわち、(A1 – 25569)が表すのは、1970年1月1日 0時0分0秒から当該日時までの日数となる。
一日に満たない端数は、小数で表されている。

86400とは

86400とは、60 × 60 × 24を計算した値だ。
すなわち、一日の秒数を表している。

したがって、((A1 – 25569) * 86400)が表すのは、 1970年1月1日 0時0分0秒から当該日時までの秒数となる。

定義より、この値がUnix時間となるが、日本国内で使用する場合には、さらに時差の考慮が必要となる。

32400とは

32400とは、 60 × 60 × 9を計算した値だ。
すなわち、日本時間とグリニッジ標準時との時差を秒で表した値となる。

したがって、((A1 – 25569) * 86400) – 32400が表すのは、日本時間に補正したUnix時間ということになる。

まとめ

A1セルにExcel形式の日時が格納されている場合、以下のような式を使ってUnix時間を求めることができる。

=((A1 – 25569) * 86400) – 32400

コメントを残す

メールアドレスが公開されることはありません。