diff --git a/MTDates/NSDate+MTDates.m b/MTDates/NSDate+MTDates.m index 0ad5f2a..d0016e0 100644 --- a/MTDates/NSDate+MTDates.m +++ b/MTDates/NSDate+MTDates.m @@ -392,6 +392,7 @@ - (NSInteger)mt_weekdayOfWeek NSInteger weekdayOfWeek = [[NSDate mt_calendar] ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitWeekOfYear forDate:self]; + weekdayOfWeek += [[NSDate mt_calendar] firstWeekday] - 1; [[NSDate sharedRecursiveLock] unlock]; return weekdayOfWeek; } @@ -693,7 +694,7 @@ - (NSDate *)mt_startOfCurrentWeek { [[NSDate sharedRecursiveLock] lock]; NSInteger weekday = [self mt_weekdayOfWeek]; - NSDate *date = [self mt_dateDaysAfter:-(weekday - 1)]; + NSDate *date = [self mt_dateDaysAfter:-(weekday - [[NSDate mt_calendar] firstWeekday])]; NSDate *startOfCurrentWeek = [NSDate mt_dateFromYear:[date mt_year] month:[date mt_monthOfYear] day:[date mt_dayOfMonth] diff --git a/MTDatesTests/MTDatesTests.m b/MTDatesTests/MTDatesTests.m index 6d79690..aebc2a8 100644 --- a/MTDatesTests/MTDatesTests.m +++ b/MTDatesTests/MTDatesTests.m @@ -1065,6 +1065,62 @@ - (void)test_firstDayOfWeek [NSDate mt_setFirstDayOfWeek:1]; } +- (void)test_firstDayOfWeek2 +{ + NSDate *date = [_formatter dateFromString:@"07/11/1986 09:23am"]; + + [NSDate mt_setFirstDayOfWeek:1]; + XCTAssertEqualObjects([NSDate mt_dateFromYear:[date mt_year] + week:[date mt_weekOfYear] + weekday:[date mt_weekdayOfWeek] + hour:[date mt_hourOfDay] + minute:[date mt_minuteOfHour]], date); + + [NSDate mt_setFirstDayOfWeek:2]; + XCTAssertEqualObjects([NSDate mt_dateFromYear:[date mt_year] + week:[date mt_weekOfYear] + weekday:[date mt_weekdayOfWeek] + hour:[date mt_hourOfDay] + minute:[date mt_minuteOfHour]], date); + + [NSDate mt_setFirstDayOfWeek:3]; + XCTAssertEqualObjects([NSDate mt_dateFromYear:[date mt_year] + week:[date mt_weekOfYear] + weekday:[date mt_weekdayOfWeek] + hour:[date mt_hourOfDay] + minute:[date mt_minuteOfHour]], date); + + [NSDate mt_setFirstDayOfWeek:4]; + XCTAssertEqualObjects([NSDate mt_dateFromYear:[date mt_year] + week:[date mt_weekOfYear] + weekday:[date mt_weekdayOfWeek] + hour:[date mt_hourOfDay] + minute:[date mt_minuteOfHour]], date); + + [NSDate mt_setFirstDayOfWeek:5]; + XCTAssertEqualObjects([NSDate mt_dateFromYear:[date mt_year] + week:[date mt_weekOfYear] + weekday:[date mt_weekdayOfWeek] + hour:[date mt_hourOfDay] + minute:[date mt_minuteOfHour]], date); + + [NSDate mt_setFirstDayOfWeek:6]; + XCTAssertEqualObjects([NSDate mt_dateFromYear:[date mt_year] + week:[date mt_weekOfYear] + weekday:[date mt_weekdayOfWeek] + hour:[date mt_hourOfDay] + minute:[date mt_minuteOfHour]], date); + + [NSDate mt_setFirstDayOfWeek:7]; + XCTAssertEqualObjects([NSDate mt_dateFromYear:[date mt_year] + week:[date mt_weekOfYear] + weekday:[date mt_weekdayOfWeek] + hour:[date mt_hourOfDay] + minute:[date mt_minuteOfHour]], date); + + [NSDate mt_setFirstDayOfWeek:1]; +} + - (void)test_firstWeekOfYear { NSDate *date = nil;