2011-06-12 58 views
2

我想了一年的一週(在當前的文化),所以我做的:如何在一些文化中獲得一年的一週?

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

在當前的文化是fa-IR(波斯語)日曆是GregorianCalendarweek值爲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(); 

,但沒有文化。

但我需要這種文化,因爲我覺得是不好的檢查,如果日曆是公曆然後用波斯語,如果你有更好的想法或不知道這事,請讓我知道這一點。

(據我所知公曆是老了,如果我沒看錯上面發生的事情(與公曆)是錯誤的。它應該是類似波斯曆法。)

+0

@Diego Mijelshon,我不知道爲什麼你這個問題,刪除C#的標籤,可能是在其他語言中不存在這樣的問題,也是波斯曆法是C#(我知道gerigorian是在C++中在第一,但目前我講的是C#)。 – 2011-06-15 12:18:53

+0

請閱讀我的修訂意見。 C#3.5中不存在(您創建的錯誤,標籤),問題是不相關的C#語言,但是到了.NET框架,所以我現在添加了這個標籤。 – 2011-06-15 13:38:55

+0

@Diego Mijelshon,對不起妳的權利。 – 2011-06-15 18:38:20

回答

3

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

綜上所述,這是.NET框架的限制,但是可以通過反射來解決問題。

+0

這很好,但它並沒有減少我的'如果再else'問題,我不能改變(因爲其他球隊的副作用)默認日曆,但我可以局部地改變,但在這種情況下,如果'然後else'存在。 – 2011-06-12 07:37:49

相關問題