sh1’s diary

プログラミング、読んだ本、資格試験、ゲームとか私を記録するところ

SendGrid UNIX Time から EXCEL の日付+時間に値を変換する方法

SendGrid の Suppressions からダウンロードした CSV ファイルの日付を見てみると、数字が書いてあります。

問い合わせて聞いてみたところ、どうやらこれは UNIX Time で記載してあるらしいです。

f:id:shikaku_sh:20201005154536p:plain
問い合わせ

とりあえず、このままだと見てわからないので、とりあえず EXCEL で確認できる方法をメモした記事です。

そもそも UNIX Time とは

UNIX Time とは、基準時刻 (1970/01/01 00:00:00 UTC) からの経過秒数、ということみたいです。

これでわかったのは

  • 経過秒数なので、ミリ秒を含まないから整数値
  • UTC 基準だから日本標準時JST にするには +09:00 必要

なので、1970 01/01 00:01:00 UTC なら1時間経過しただけなので、  60\times60 = 3600 じゃないかと思います。大きな数字が記録されているのも納得です。

ざっくり計算してみます。

1日で 86,400。1年で 31,536,000。2020 年は 1970 年から 50 年先なので、1,576,800,000。だいぶ created の日付に近そう。

EXCEL 日付との変換式

UNIX Time to UTC協定世界時

  • (#UNIX Time# / 86400) + 25569
    • 86,400 は1日の秒数
    • 25,569 は UNIX Time の基準時刻に相当するシリアル値

25,569 は、EXCEL のセルの書式設定で「1970/1/1」を入力してから、数値に戻すと「25,569」になります。ざっくりと EXCEL は 1900/01/01 基準で「1」なんで UNIX Time の 70 年 x 365 で 25,550。閏年は4年に一度なんで + 17.5 日。

UNIX Time to JST日本標準時 UTC+0900)

  • ((#UNIX Time# + 32400) / 86400) + 25569
    • 86,400 は1日の秒数
    • 32,400 は+9時間
    • 25,569 は UNIX Time の基準時刻に相当するシリアル値

結果

問題なく変換できました。

f:id:shikaku_sh:20201005155543p:plain:w600

CSV エクスポート

SendGrid の CSV エクスポートはこちら。

f:id:shikaku_sh:20201005155640p:plain:w600

参考

事例で学ぶサブスクリプション

事例で学ぶサブスクリプション

  • 作者:小宮紳一
  • 発売日: 2019/09/12
  • メディア: 単行本