arelle におけるコンテキスト情報内の日付処理
XBRL インスタンスのコンテキスト情報に含まれる「時点(instance)」および「期間(duration)」は,それぞれ「決算日」および「開始日と終了日」を表す。これらは arelle 内で以下の形式で表現される(以下は「前年度連結決算の時点情報」の例)。
contexts = arelle.ModelXbrl.ModelXbrl.contexts contexts['Prior1YearConsolidatedInstant'].instantDatetime
しかし,arelle の仕様では,「決算日(instantDatetime)」と「終了日(endDatetime)」を翌日に設定することになっており,arelle により取得した日付を調整する必要がある。
プログラム例
# -*- coding:utf-8 -*- from arelle import ModelManager from arelle import Cntlr import arelle import datetime #arelle を用いて XBRL インスタンスを読み込む cntlr = arelle.Cntlr.Cntlr() modelManager = arelle.ModelManager.ModelManager(cntlr) xbrl = arelle.ModelXbrl.load(modelManager, "jpfr-asr-E05179-000-2012-03-31-01-2012-07-02.xbrl") #コンテキスト集合の取得 contexts = xbrl.contexts #コンテキスト中の日付処理 # #仕様によると,endDateTime, instant の日付は翌日になる(場合もある)らしく, #これらの日付を1日前に戻す必要がある。 #http://arelle.org/wordpress/wp-content/uploads/downloads/2011/09/ComparabilityAndDataMiningUnifiedModel-Paper.pdf keys = contexts.keys() for key in keys: print key, " : ", oneday = datetime.timedelta(days=1) context = contexts[key] if context.startDatetime is not None: print "startDatetime : ", context.startDatetime if context.endDatetime is not None: print "endDatetime : ", context.endDatetime - oneday if context.instantDatetime is not None: print "instantDatetime : ", context.instantDatetime - oneday
実行結果
CurrentYearNonConsolidatedDuration : startDatetime : 2011-09-01 00:00:00 endDatetime : 2012-03-31 00:00:00 Prior1YearConsolidatedInstant : endDatetime : 2011-08-31 00:00:00 instantDatetime : 2011-08-31 00:00:00 CurrentYearConsolidatedInstant : endDatetime : 2012-03-31 00:00:00 instantDatetime : 2012-03-31 00:00:00 Prior2YearConsolidatedInstant : endDatetime : 2010-08-31 00:00:00 instantDatetime : 2010-08-31 00:00:00 Prior2YearNonConsolidatedInstant : endDatetime : 2010-08-31 00:00:00 instantDatetime : 2010-08-31 00:00:00 Prior1YearNonConsolidatedInstant : endDatetime : 2011-08-31 00:00:00 instantDatetime : 2011-08-31 00:00:00 CurrentYearNonConsolidatedInstant : endDatetime : 2012-03-31 00:00:00 instantDatetime : 2012-03-31 00:00:00 Prior1YearNonConsolidatedDuration : startDatetime : 2010-09-01 00:00:00 endDatetime : 2011-08-31 00:00:00 DocumentInfo : endDatetime : 2012-07-02 00:00:00 instantDatetime : 2012-07-02 00:00:00 Prior1YearConsolidatedDuration : startDatetime : 2010-09-01 00:00:00 endDatetime : 2011-08-31 00:00:00 CurrentYearConsolidatedDuration : startDatetime : 2011-09-01 00:00:00 endDatetime : 2012-03-31 00:00:00
参考文献
instantDatetime および endDatetime の扱いは以下の文書に記述されている:
http://arelle.org/wordpress/wp-content/uploads/downloads/2011/09/ComparabilityAndDataMiningUnifiedModel-Paper.pdf