首先,我搜索了rangeOfUnit:inUnit:forDate:
的Xamarin.iOS等价物,但似乎没有。我想翻译这段代码
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
,......),但这是另一个故事。
如何计算一个月内的周数?如果月份在一周中开始,则应计为整周。如果月份在一周中结束,它也应该算作整周。
答案 0 :(得分: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,这是本月的第二周。