0
我创建了一个简单的函数来获取一天中的第一天和最后一天。 看着NSLog输出,我发现不同的值是从同一日期的NSDate描述符和组件日返回的,为什么?同一日期的NSDate和NSDateComponent值之间的差异
这里的NSLog输出:
NSDATE: 2011-04-03 22:00:00 +0000, DAY COMPONENT: 4
NSDATE: 2011-04-09 22:00:00 +0000, DAY COMPONENT: 10
正如你可以看到,是的NSDate 4月3日和一天组分是4对第一行,并分别9和10为第二个。
下面的代码:
NSDate *date = [NSDate date]; //Today is April 5th 2011
NSCalendar *cal =[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
[cal setFirstWeekday:2]; //My week starts from Monday
//DEFINE BEGINNING OF THE WEEK
NSDate *beginningOfWeek = nil;
[cal rangeOfUnit:NSWeekCalendarUnit startDate:&beginningOfWeek interval:nil forDate:date];
NSDateComponents *beginComponents = [cal components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit) fromDate:beginningOfWeek];
//DEFINE END OF THE WEEK, WITH 6 days OFFSET FROM BEGINNING
NSDateComponents *offset = [[NSDateComponents alloc]init];
[offset setDay:6];
NSDate *endOfWeek = [cal dateByAddingComponents:offset toDate:beginningOfWeek options:0];
NSDateComponents *endComponents = [cal components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit) fromDate:endOfWeek];
NSLog(@"NSDATE: %@, DAY COMPONENT: %d",beginningOfWeek, [beginComponents day]);
NSLog(@"NSDATE: %@, DAY COMPONENT: %d",endOfWeek, [endComponents day]);
我得到当前的日期输出,我看到这是前进2小时。 在我启动功能我的时钟是在19:16的日期,看看这里输出:“今天2011-04-05 17:16:20 +0000”是17.16而不是19.16。 在我的问题中,我看到输出结果是2小时也报告22:00而不是24:00(因此,正确的一天) – MatterGoal 2011-04-05 17:22:53