[Bug] 江戸以前の元号で西暦換算が1年ズレる
shihono opened this issue · 0 comments
shihono commented
🐛 Bug
説明
明治時代より前は太陰暦(旧暦)を使っており、和暦と西暦が一対一対応でないことがある。
元号が変わったタイミングによって、ずれが生じる。
wikipediaのTemplate:日本の元号 では天保は 1830 - 1844
となっているが、始まり終わりともに12月に改元したため、実際に西暦換算すると 1831年から1845年
の期間しか存在していない。
現状挙動
上記説明が原因でいくつかの元号において value の変更が1年ずれる。
天保 の場合、天保元年12月から天保2年の 11月 まで1831年だが天保2年を1832年と変換する。
from ja_timex import TimexParser
TimexParser().parse("天保元年")
[<TIMEX3 tid="t0" type="DATE" value="1831-XX-XX" text="天保元年">]
TimexParser().parse("天保2年")
[<TIMEX3 tid="t0" type="DATE" value="1832-XX-XX" text="天保2年">]
他の元号でも元年以降の結果にズレが生じている。
# 大塩平八郎の乱: https://ja.wikipedia.org/wiki/%E5%A4%A7%E5%A1%A9%E5%B9%B3%E5%85%AB%E9%83%8E%E3%81%AE%E4%B9%B1
TimexParser().parse("大塩平八郎の乱(おおしおへいはちろうのらん)は、江戸時代の天保8年(1837年)に、大坂(現・大阪市)で大坂町奉行所の元与力大塩平八郎(中斎)とその門人らが起こした江戸幕府に対する反乱である。")
[<TIMEX3 tid="t0" type="DATE" value="1838-XX-XX" text="天保8年">,
<TIMEX3 tid="t1" type="DATE" value="1837-XX-XX" text="1837年">]
# 文禄・慶長の役: https://ja.wikipedia.org/wiki/%E6%96%87%E7%A6%84%E3%83%BB%E6%85%B6%E9%95%B7%E3%81%AE%E5%BD%B9
TimexParser().parse("翌文禄2年(1593年)に休戦した文禄の役")
[<TIMEX3 tid="t0" type="DATE" value="1594-XX-XX" text="文禄2年">,
<TIMEX3 tid="t1" type="DATE" value="1593-XX-XX" text="1593年">]
# 源実朝: https://ja.wikipedia.org/wiki/%E6%BA%90%E5%AE%9F%E6%9C%9D
TimexParser().parse("建保7年1月27日(1219年2月13日)")
[<TIMEX3 tid="t0" type="DATE" value="1220-01-27" text="建保7年1月27日">,
<TIMEX3 tid="t1" type="DATE" value="1219-02-13" text="1219年2月13日">]
理想の挙動
Template:日本の元号 の開始年が赤背景の元号について、元年以外の場合は /ja_timex/dictionary/wareki.json の値を +1 する
本来は日付まで記載されていないと西暦への変換が難しいが、12月以外はズレてしまう現状の挙動よりは確実と考える。
再現方法やエラー内容
実行環境
- ja-timexのバージョン : 0.2.8
- Pythonのバージョン : 3.9.18
- OSの情報: macOS Sonoma