2015-03-13 108 views
0

首先我搜索了一個Xamarin.iOS等價物rangeOfUnit:inUnit:forDate:,但似乎沒有。我想翻譯這個代碼計算一個月內的星期數,包括部分星期

NSRange rangeOfWeeks = [self.calendar rangeOfUnit:NSWeekCalendarUnit inUnit:NSMonthCalendarUnit forDate:firstOfMonth]; 

但在Xamarin.iOS沒有rangeOfUnit:inUnit:forDate。有像this

public static int Weeks(int year, int month) 
{ 
    DayOfWeek wkstart = DayOfWeek.Monday; 

    DateTime first = new DateTime(year, month, 1); 
    int firstwkday = (int)first.DayOfWeek; 
    int otherwkday = (int)wkstart; 

    int offset = ((otherwkday + 7) - firstwkday) % 7; 

    double weeks = (double)(DateTime.DaysInMonth(year, month) - offset)/7d; 

    return (int)Math.Ceiling(weeks); 
} 

,但這裏部分星期不計算在內。我也認爲你失去了本地化的一部分(沒有NSCalendar,...),但那是另一回事。

如何計算一個月內的週數?如果一個月的月份開始,它應該算作整整一週。如果月份在一週中旬結束,它也應該算作整週。

回答

3

看起來你是在週數之後。如果是這種情況下面的代碼得到它。

 nint era, year, weekOfYear, weekday; 
     NSCalendar.CurrentCalendar.GetComponentsFromDateForWeekOfYear(out era, out year, out weekOfYear, out weekday, NSDate.Now); 

     System.Diagnostics.Debug.WriteLine(weekOfYear); 

     var weekOfMonth = NSCalendar.CurrentCalendar.GetComponentFromDate(NSCalendarUnit.WeekOfMonth, NSDate.Now); 

     System.Diagnostics.Debug.WriteLine(weekOfMonth); 

今天是#11,這是本月的第2周。

+0

感謝您的回答。 'rangeOfUnit'是一個非常強大的工具,但它在Xamarin.iOS上不可用。其實我想得到一個月的週數。對不起,我沒有正確寫下我的問題(並且我錯誤地鏈接了)。不過,您提到的功能將幫助我在其他方面。 +1 – testing 2015-03-16 10:00:11