我想检查一个NSDate是否与今天在同一周。所以我认为weekOfYear
从NSDateComponents
s就像这post中提到的。检查一个NSDate是否在本周使用当周
- (BOOL)dateIsThisWeek:(NSDate *)date
{
NSCalendar *cal = [NSCalendar currentCalendar];
[cal setFirstWeekday: 2]; // Added in second try
NSDate *today = [NSDate date];
NSDateComponents *todaysComponents = [cal components:NSCalendarUnitWeekOfYear fromDate: today];
NSUInteger todaysWeek = [todaysComponents weekOfYear];
NSDateComponents *otherComponents = [cal components:NSCalendarUnitWeekOfYear fromDate: date];
NSUInteger anotherWeek = [otherComponents weekOfYear];
return todaysWeek == anotherWeek; // todaysWeek=7 | anotherWeek=8
}
在我的例子中,我的日期如下:
today: 2017-02-15 12:00:00 +0000
date: 2017-02-18 12:00:00 +0000
的问题是,todaysWeek
被设定为7和anotherWeek
〜8,我不能想象为什么。
我认为这个问题可能是,该周开始在周日,所以我的日历的首个工作日设置为2(星期一),可惜没有成功。
UPDATE
我也试过这个代码,但不幸的是同样的结果:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *todaysComponents = [gregorian components:NSCalendarUnitWeekOfYear fromDate:[NSDate date]];
NSUInteger todaysWeek = [todaysComponents weekOfYear];
NSDateComponents *otherComponents = [gregorian components:NSCalendarUnitWeekOfYear fromDate: date];
NSUInteger datesWeek = [otherComponents weekOfYear];
return todaysWeek==datesWeek; // todaysWeek=7 | datesWeek=8
两个日期应该是在一周7号一样多websites的描述。
你如何定义一个“周”?它是当前的“命名周” - 即从上个星期天开始?从上周一开始?连续7天是一周吗?那么,如果1月1日是星期四,那么1月6日星期二仍然是第一个“星期”? – DonMag
的可能的复制[如何检查是否NSDate的是在本周?](http://stackoverflow.com/questions/38970836/how-to-check-if-nsdate-is-in-current-week) – 2017-02-15 13:46:34
@DonMag在我看来,一周是周一到周日,就像这个例子:http://week-number.net/calendar-with-week-numbers-2017.html – user3191334