2015-03-13 104 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