Excelからデータを読み取り、Pythonを使用してデータを操作しています。しかし、日付は整数として来ています。日付を日付形式に戻すにはどうすればよいですか?
2015年5月15日は42139.00として来ています
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)
モジュール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))