次の方法で共有


PersianCalendar クラス

この記事は、この API のリファレンス ドキュメントの補足説明です。

ペルシア語が話されているほとんどの国/地域ではペルシア暦が使われていますが、異なる月の名前が使われている地域もあります。 ペルシア暦はイランとアフガニスタンの公式暦であり、カザフスタンやタジキスタンなどの地域では代替暦の 1 つです。

Note

PersianCalendar クラスや .NET のその他のカレンダー クラスの使用方法の詳細については、「カレンダーの使用」を参照してください。

ペルシア暦は太陽イスラム暦であり、ムハンマド (PBUH) がメッカからメディナに移住した西暦 622 年に相当するヒジュラ紀元から始まります。

ペルシア暦は太陽暦に基づいており、長さは約 365 日です。 1 年には四季があり、地球の中心から見て太陽が南半球から北半球に赤道を通過するように見えるときから新しい年が始まります。 ファルバルディーン月の 1 日 (北半球では春分の日) に新年を迎えます。 たとえば、西暦 2002 年 3 月 21 日という日付は、ペルシア年 1381 年のファルバルディーン月の 1 日に相当します。

ペルシア暦では、最初の 6 か月はそれぞれ 31 日、次の 5 か月はそれぞれ 30 日、最後の月は平年では 29 日、うるう年では 30 日あります。 うるう年とは、33 で割ったときの余りが 1、5、9、13、17、22、26、または 30 になる年です。 たとえば、1370 年は 33 で割ると余りが 17 になるため、うるう年です。 33 年周期で約 8 回のうるう年があります。

PersianCalendar クラスと .NET Framework のバージョン

.NET Framework 4.6 以降の PersianCalendar クラスでは、日付の計算に観測アルゴリズムではなく、イスラム太陽天文学アルゴリズムを使います。 これにより、PersianCalendar の実装は、ペルシア暦が最も広く使われているイランとアフガニスタンの 2 か国で使われているペルシア暦と一致します。 この変更は、.NET Framework 4.6 がインストールされている場合、.NET Framework 4 以降で実行されているすべてのアプリに影響します。

アルゴリズムが変更された結果:

  • グレゴリオ暦で 1800 年から 2123 年までの日付を変換すると、2 つのアルゴリズムは同じ結果を返すはずです。

  • 2 つのアルゴリズムは、グレゴリオ暦の 1800 より前と 2123 より後の日付を変換するときに、異なる結果を返す場合があります。

  • MinSupportedDateTime プロパティの値は、グレゴリオ暦 0622 年 3 月 21 日からグレゴリオ暦 0622 年 3 月 22 日に変更されました。

  • MaxSupportedDateTime プロパティの値は、ペルシア暦 9378 年 10 月 10 日からペルシア暦 9378 年 10 月 13 日に変更されました。

  • IsLeapYear メソッドは、以前とは異なる結果を返す可能性があります。

PersianCalendar クラスを使う

アプリケーションでペルシア暦の日付を計算する場合や、ペルシア暦の日付とグレゴリオ暦の日付を相互に変換する場合に、PersianCalendar オブジェクトを使います。

PersianCalendar オブジェクトをカルチャの既定のカレンダーとして使うことはできません。 既定のカレンダーは CultureInfo.Calendar プロパティで指定します。また、CultureInfo.OptionalCalendars プロパティで返されるカレンダーの 1 つにする必要があります。 現在、PersianCalendar クラスは、CultureInfo クラスがサポートするどのカルチャでも省略可能なカレンダーではないため、既定のカレンダーにすることはできません。