使用NSDateComponents比较两个日期

时间:2014-07-18 16:27:29

标签: ios nsdate nsdatecomponents

我使用此代码比较两个日期并返回天数差异。我想使用它并得到分钟和小时数,但我得到相同的数字。

NSDate *todaysDate =[NSDate date];
NSDate *eventDate = [self.event objectForKey:@"eventDate"];

NSDateComponents *components = [[NSCalendar currentCalendar] components: NSDayCalendarUnit
                                                                   fromDate: todaysDate toDate: eventDate options: 0];

NSInteger days = [components day];
NSInteger hours = [components hour];

NSLog(@"Number of days %ld", days);
NSLog(@"Number of hours %ld", hours);

eventDate以此格式" 2014-08-08 13:11:00 + 0000"

我总是得到的小时或分钟数是" 9223372036854775807"。

1 个答案:

答案 0 :(得分:0)

如果在编程计算器中输入“9223372036854775807”十进制值并将其转换为十六进制,则得到0x7FFFFFFFFFFFFFFF。这可能是NSUndefinedDateComponent常量,这意味着NSDateComponents对象没有请求的字段,因为在创建NSDateComponent时没有使用NSHourCalendarUnit和NSMinuteCalendarUnit请求它们。只会初始化您在“components:”参数中指定的那些字段。 days字段应包含正确的值。要获得小时和分钟,您需要更改此行:

NSDateComponents *components = [[NSCalendar currentCalendar] components: NSDayCalendarUnit
                                          | NSHourCalendarUnit | NSMinuteCalendarUnit
                                          fromDate: todaysDate toDate: eventDate options: 

0];