Как получить неделю года в некоторых культурах? - PullRequest
2 голосов
/ 12 июня 2011

Я хочу получить неделю года (в текущей культуре), поэтому я делаю:

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();

, но нет культуры.

но мне нужна эта культура, потому что я думаю, что нехорошо проверять, является ли календарь григорианскимзатем используйте персидский, если у вас есть идея или вы знаете что-нибудь об этом, пожалуйста, дайте мне знать.

(Как я знаю, григорианский календарь стар, и если я не ошибаюсь, то, что произошло выше (с григорианским),неправильно. должно быть похоже на персидский календарь.)

1 Ответ

3 голосов
/ 12 июня 2011

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

Таким образом, это ограничение .NET Framework, но возможен обходной путь с отражением.

...