我正面临一个问题。我从用户那里获取开始日期和结束日期。我在UI中展示了那几个月。
第一个问题:如果用户提供同一个月的不同日期(例如2013-01-10和2013-01-25),我会尝试获取两个日期的差异时间,月差异显示我零月。如何获得月份差异,包括开始日期月份和结束日期月份?
第二个问题:如果用户提供了不同的日期,例如2013-01-29和2013-02-01,它仍然会给我零月差异。我怎样才能克服这两个问题呢?在这两种情况下,我都得到了相同的结果。我该如何区分?
感谢。
答案 0 :(得分:4)
你可以尝试一下
NSString *fromDateString = @"2013-01-10";
NSString *toDateString = @"2013-01-25";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSDate * fromDate = [formatter dateFromString:fromDateString];
NSDate *toDate = [formatter dateFromString:toDateString];
NSCalendar *calender = [NSCalendar currentCalendar];
NSUInteger units = (NSMonthCalendarUnit|NSDayCalendarUnit);
NSDateComponents *dateComponents = [calender components:units fromDate:fromDate toDate:toDate options:0];
NSString *duration = nil;
if (dateComponents.month) {
//Different months
duration = [NSString stringWithFormat:@"%d months",dateComponents.month];
}else{
//Same month
duration = [NSString stringWithFormat:@"%d days",dateComponents.day];
}
NSLog(@"Duration : %@",duration);
答案 1 :(得分:0)
您可以在Github上查看这个项目:
即使您无法使用整个库,也可以查看实现它的代码。有一种方法应该是你需要的:
- (NSInteger)mt_monthsSinceDate:(NSDate *)date;