2013年1月26日土曜日

Excelシリアル値とUNIXシリアル値の変換



シリアル値とは

コンピュータの内部で日時を表現するために使用している数値のことを言う。


Excelのシリアル値

エクセルでは 1900/1/0 を起点 0 として、整数部に日付、小数部を時刻(時間)として割り当てている。

たとえば、2013/1/18 を数値に変換すると、41292 となる。これは 1900/1/0 を起点として、通算日数を示している。逆に 41292.5 を日付に変換すると 2013/1/18 12:00:00 となる。1日は24時間で、0.5*24H は12となるからだ。




上記はWindowsの場合のシリアル値である、Macintosh版エクセルでは 1904年を基準としているので注意。



UNIXシリアル値(UNIX Time)


UNIXタイムとは、UNIX(Linux)内部で日時を表現するために使用している数値のことを言う。
1970年1月1日を基点として、1秒ごとに1を加算する。





UNIXシリアル値をExcelシリアル値に変換するには

Excelでは1日を 数値1 とし、 UNIXタイムでは 1秒を数値1 とするため、Excelの1(1日)を24時間☓60分☓60秒=86400 として計算する。+"9:00" は、日本標準時(GMT+9:00)を意味する。

  • ="1970/1/1"+A1/86400+"9:00"



Excelシリアル値をUNIXシリアル値に変換するには

上記の逆パターン

  • =(A1-"1970/1/1"-"9:00")*86400