投稿日 | : 2007/03/20(Tue) 13:32 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re^5: 和暦の入力チェック |
> それと、明治の最初はよくわかりません。
以前調べた時の覚書によると、「明治」という和暦は下記のような仕様だそうです。
・グレゴリオ暦でいうと、1868年1月25日〜1912年7月30日に相当する期間である。
・和暦表現上は、「明治元年1月1日」〜「明治45年7月30日」とされる。
・明治6年の旧暦(天保壬寅元暦)から新暦(グレゴリオ暦)への変更ゆえ、
新暦「明治6年1月1日」(グレゴリオ暦:1873年1月1日)の『前日』は、
旧暦「明治5年12月2日」(グレゴリオ暦:1872年12月31日)となっているため、
明治5年12月3日〜明治5年12月31日という日付は、実際には存在しない。
・ただし、新暦採用後も旧暦で記録された資料や、あるいは、それ以前の日付を
新暦相当の日付に換算して表現される場合もあるので、その場合に限っては、
明治5年12月3日などの日付表現が限定的に使用される可能性がある。
・最大日付である「明治45年7月30日」は、次の元号の最小日付である
「大正元年7月30日」と被る日付となる。
・明治の改元日は慶應4年9月8日(グレゴリオ暦:1868年10月23日)であるが、
同年1月1日まで遡って適用されたため、この期間は、前の元号<慶應>と
被る日付となる。
……という、何ともややこしい仕様になっているようでしたよ。(^_^;
結局、旧暦・新暦の違いや、遡って適用された期間などがあるので、処理系によって、
「明治の開始日」というものが微妙に異なるので、結構ややこしい。
明治初期の日付を扱う必要が無いのであれば、あえて取り組む必要は無いかも知れません。
--------
改元日を基準にして設定された処理系では、開始日はグレゴリオ暦1868年10月23日とされます。
これは和暦表現で、「明治元年9月8日(旧暦)」「明治元年10月23日(新暦)」に相当します。
--------
法的な適用日を基準にするのであれば、開始日はグレゴリオ暦1868年1月25日です。
和暦表現でいうと、「明治元年1月1日(旧暦)」「明治元年1月25日(新暦)」に相当します。
ただしこの場合は、新暦表現されることは稀で、グレゴリオ暦または旧暦表現が一般的です。
--------
旧暦と新暦を区別して扱う事ができない処理系においては、日本でグレゴリオ暦が
採用された日付を取って、グレゴリオ暦1873年1月1日を開始日とする場合もあります。
和暦表現上は、新暦の「明治6年1月1日」です。
--------
月日を無視し、年だけで判断する処理系においては、グレゴリオ暦1868年1月1日を
開始日とする処理系も稀に見られます。
この場合、開始日の和暦表現は無意味ですが、あえて表現すると旧暦「慶応3年12月7日」です。
--------
ちなみに VB6 には、旧暦換算用の機能が用意されていないため、Format関数 での処理結果は、
常に新暦(グレゴリオ暦)の日付として出力されることになります。
# VB2005 であれば、旧暦処理クラス(JapaneseLunisolarCalendar)や
# 和暦処理クラス(JapaneseCalendar)が使えるのですけれどね。