2

(現在の文化で)年の週を取得したいので、次のようにします。

var week = CultureInfo.CurrentCulture.Calendar
           .GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay,
                          DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek);

現在の文化がfa-IR(ペルシャ語) の場合、暦はGregorianCalendarで、week値は 24 です (ペルシャ語では 13 週目です)。

しかし、以下のように PersianCalendar でテストすると:

 var calendar = new PersianCalendar();
 var week = calendar
           .GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay,
                          DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek);

それは真の答えを与えます(13)。

カルチャのカレンダーがペルシア語であることを確認しました:

var persianCultures = CultureInfo.GetCultures(CultureTypes.AllCultures)
                       .Where(x => x.Calendar is PersianCalendar).ToList();

しかし、文化はありません。

しかし、カレンダーがグレゴリオ暦であるかどうかを確認してからペルシャ暦を使用するのは良くないと思うので、この文化が必要です。これについてもっと良いアイデアや知っていることがあれば教えてください。

(私が知っているように、グレゴリオ暦は古いものです。私が間違っていなければ、(グレゴリオ暦で)上記で起こったことは間違っています。ペルシャ暦に似ているはずです。)

4

1 に答える 1

3

http://www.codeproject.com/KB/dotnet/PersianCulture.aspx

要約すると、これは .NET フレームワークの制限ですが、リフレクションで回避策が可能です。

于 2011-06-12T07:27:48.150 に答える