我正在尝试获取两个日期之间的天数,并且我的逻辑似乎适用于各种日期 - 比如 2012 年 8 月 12 日 - 2013 年 8 月 12 日 - 如果我包括结束日,它返回 364 天,365 天在计算中。但是,如果我插入 2013 年 8 月 8 日 - 2013 年 8 月 12 日,我会得到 0,如果将结束日期添加到计算中,则会得到 1。不知道我在这里做错了什么:
NSString* strNow = @"August 12, 2013";
NSString* strThen = @"August 8, 2012";
NSString* strNumOfDays = [dateManager getDateDifference:strThen :strNow];
方法
- (NSString*) getDateDifference : (NSString*) startDate : (NSString*) endDate {
//convert strings to dates
NSDate* dateStart = [self convertStringToDate:startDate];
NSDate* dateEnd = [self convertStringToDate:endDate];
//check to make sure the second date is later than the first
//get the number of days between
NSCalendar* gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents* components = [gregorianCalendar components:NSDayCalendarUnit fromDate:dateStart toDate:dateEnd options:0];
//the plus one is for including the endDate in the count
return [NSString stringWithFormat:@"%i", [components day]+1];
}
字符串转日期方法
- (NSDate*) convertStringToDate : (NSString*) strToConvert {
NSError* error = nil;
NSDataDetector* detector = [NSDataDetector dataDetectorWithTypes:(NSTextCheckingTypes)NSTextCheckingTypeDate error:&error];
NSArray* arrDateMatches = [detector matchesInString:strToConvert options:0 range:NSMakeRange(0, [strToConvert length])];
for (NSTextCheckingResult* match in arrDateMatches) {
strToConvert = [self convertDateToString:match.date];
}
NSDate* myDate = [dateFormatter dateFromString:strToConvert];
return myDate;
}
@Wain - 转换按预期工作。@Rob - 我正在使用 NSTextCheckingTypes 因为我不知道提交日期的格式是什么 - 它可能是 2013 年 8 月 12 日、2013 年 8 月 8 日、2013 年 8 月 12 日等。