C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■97153 / 1階層)  VBで和暦コード(1〜5)から元号を取得する方法
□投稿者/ 魔界の仮面弁士 (3045回)-(2021/04/07(Wed) 12:12:29)
2021/04/07(Wed) 17:14:05 編集(投稿者)

No97149 (sol さん) に返信
> JapaneseCalendarのGetEraで元号のコード1〜5が得られると思いますが、その逆で

ちなみに JapaneseCalendar.Eras プロパティで、
有効な元号コードの一覧が得られます。

また、下記の点についても考慮しておくべきかと。


(1) 扱う日付範囲は、いつかからいつまで?

VB の日付型は、最小値が 0001/01/01 です。
VBA の日付型は、最小値が 0100/01/01 です。

JapaneseCalendar は 1868/01/01〜1868/09/07 の日付を許容していますが、
JapaneseCalendar.MinSupportedDateTime は 1868/09/08 となっています。

しかし日本においては、
 1872/12/31 (明治5年12月2日) までは 天保暦 (JapaneseLunisolarCalendar)
で、その翌日から
 1873/01/01 (明治6年1月1日) からは グレゴリオ暦 (JapaneseCalendar)
という切替があったため、
"1051210" (←明治5年12月10日)などを NG とする処理系もあります。

天保暦の期間までサポートするとなると、「閏月」の管理も必要になるので、
グレゴリオ暦相当に変換して扱う処理系もありますが……それもややこしいので
「サポート範囲は明治6年以降のみ」のように打ち切ってしまうのも一つの手です。


(2) 元号コードのエラーを補正する必要がありますか?

令和元年は5月1日からでしたが、
"5010430" (←令和元年4月30日) をエラーとするか、2019/04/30 として扱うか
"4310501" (←平成31年5月1日) をエラーとして扱うか、2019/05/01 として扱うか
という問題があります。
元号と年だけを参照し、月日は変換時に無視するという処理系もあります。


(3) 発布同日改元を許容するべきですか?

昭和→平成や平成→令和は「翌日改元」でしたが、
明治→大正や大正→昭和は「同日改元」だったため、
重複する期間が存在します。

1926年12月25日は「大正15年12月25日」であり、「昭和元年12月25日」でもありますが、
"4011225" と "3151225" を同じ日付 1926/12/25 として扱いますか?
それとも一方のみを有効な日付とし、他方をエラーとして扱いますか?

1912年7月30日も同日改元で、「明治45年7月30日」と「大正元年7月30日」は同一日です。


慶応→明治に至っては、1868/10/23 (慶応4年9月8日)の発布時に
旧暦1月1日に遡って適用されたたため、
1868/01/25(旧暦1月1日)〜1868/10/23(旧暦9月8日)の期間は
「慶応4年でもあり、明治元年でもある」期間です。
※ JapaneseCalendar.MinSupportedDateTime が 1868/09/08 である所以
解決済み
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←VBで和暦コード(1〜5)から元号を取得する方法 /sol →Re[2]: VBで和暦コード(1〜5)から元号を取得する方法 /sol
 
上記関連ツリー

VBで和暦コード(1〜5)から元号を取得する方法 / sol (21/04/07(Wed) 11:09) #97149
Re[1]: VBで和暦コード(1〜5)から元号を取得する方法 / shu (21/04/07(Wed) 11:41) #97150
│└ Re[2]: VBで和暦コード(1〜5)から元号を取得する方法 / sol (21/04/07(Wed) 11:47) #97151
│  └ Re[3]: VBで和暦コード(1〜5)から元号を取得する方法 / ニケ (21/04/07(Wed) 11:53) #97152 解決済み
VBで和暦コード(1〜5)から元号を取得する方法 / 魔界の仮面弁士 (21/04/07(Wed) 12:12) #97153 解決済み ←Now
  └ Re[2]: VBで和暦コード(1〜5)から元号を取得する方法 / sol (21/04/07(Wed) 16:43) #97154
    └ Re[3]: VBで和暦コード(1〜5)から元号を取得する方法 / Hongliang (21/04/07(Wed) 16:49) #97155
      └ Re[4]: VBで和暦コード(1〜5)から元号を取得する方法 / sol (21/04/07(Wed) 16:57) #97156 解決済み
        └ Re[5]: VBで和暦コード(1〜5)から元号を取得する方法 / shu (21/04/08(Thu) 07:10) #97158 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信