web-dev-qa-db-ja.com

Excelから数値形式の日付を日付形式に変換python

Excelからデータを読み取り、Pythonを使用してデータを操作しています。しかし、日付は整数として来ています。日付を日付形式に戻すにはどうすればよいですか?

2015年5月15日は42139.00として来ています

16
user2728024
from datetime import datetime
Excel_date = 42139
dt = datetime.fromordinal(datetime(1900, 1, 1).toordinal() + Excel_date - 2)
tt = dt.timetuple()
print dt
print tt

J.F.セバスチャンが述べたように、この回答は1900/03/01以降の日付に対してのみ機能します

編集:(@ R.Kに答えて)

もしあなたの Excel_dateは浮動小数点数です。次のコードを使用してください:

def floatHourToTime(fh):
    h, r = divmod(fh, 1)
    m, r = divmod(r*60, 1)
    return (
        int(h),
        int(m),
        int(r*60),
    )

Excel_date = 42139.23213
dt = datetime.fromordinal(datetime(1900, 1, 1).toordinal() + int(Excel_date) - 2)
hour, minute, second = floatHourToTime(Excel_date % 1)
dt = dt.replace(hour=hour, minute=minute, second=second)
18
saeedgnu

モジュールxlrdは関数 xldate_as_Tuple Excelの数値日付形式をタプルに変換する(year, month, day, hour, minute, nearest_second)

次に datetime.datetime タプルをdatetime- objectに変換します。

from datetime import datetime
import xlrd

Excel_date = 44032
python_date = datetime(*xlrd.xldate_as_Tuple(Excel_date, 0))
7
zveryansky