LoginSignup
26
19

More than 5 years have passed since last update.

エクセル日付の「数値」を python の datetime に変換する

Last updated at Posted at 2017-05-29

python の xlrd などでエクセルファイルを読み込むと、エクセル上で表示されていた日付が、41496 などの 5 桁の謎の数値に代わっている。

これは、エクセルでは日付は 1900 年 1 月 1 日を起点 (1 日目) として、そこから日数を加算した数値で日付データを保持しているためらしい。

  • 例えば 2017 年 5 月 29 日では 42884 。1900 年 1 月 1 日から 42884 日経過しているらしい。
  • (ちなみに 1800 年とかエクセルに入れると数値変換されない。マイナスとかにならなんだ)

この数値を python で日付形式に変換するには、timedelta を用いて次のように加算すればよい. num にはエクセルの数値を代入する

def excel_date(num):
    from datetime import datetime, timedelta
    return(datetime(1899, 12, 30) + timedelta(days=num))

例えば、41496 を入れると、2013 年 8 月 10日の datetime が返される。

excel_date(41946)

> datetime.datetime(2013, 8, 10, 0, 0)
26
19
1

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
26
19