如果截止日期实际上是今天或明天,我想在标签中显示“今天”或“明天”,并以“dd-mm-yyy”格式显示其余部分。
除了(鉴于今天是6月7日)这一事实外,一切都有效:
这是我的代码:
- (void)configureDueLabelForCell:(UITableViewCell *)cell withChecklistItem:(ChecklistItem *)item
{
UILabel *label = (UILabel *)[cell viewWithTag:1002];
if (item.shouldRemind) {
int difference = [self dateDiffrenceToDate:item.dueDate];
if (difference == 0) {
label.text = @"Today";
} else if (difference == 1) {
label.text = @"Tomorrow";
} else {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// [formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setDateFormat:@"dd-MM-yyyy"];
label.text = [formatter stringFromDate:item.dueDate];
}
} else {
label.text = @"";
}
}
-(int)dateDiffrenceToDate:(NSDate *)dueDate
{
// Manage Date Formation same for both dates
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd-MM-yyyy"];
NSDate *startDate = [NSDate date];
NSDate *endDate = dueDate;
unsigned flags = NSDayCalendarUnit;
NSDateComponents *difference = [[NSCalendar currentCalendar] components:flags fromDate:startDate toDate:endDate options:0];
int dayDiff = [difference day];
return dayDiff;
}
我也尝试过:
// NSDate *startDate = [NSDate date];
// NSDate *endDate = dueDate;
//
// NSTimeInterval secondsBetween = [endDate timeIntervalSinceDate:startDate];
//
// int numberOfDays = secondsBetween / 86400;
// NSLog(@"numberofdays: %d", numberOfDays);
//
// return numberOfDays;
答案 0 :(得分:3)
“...此方法将计算结果截断为提供的最小单位。例如,如果fromDate:参数对应于2010年1月14日晚上11:30,而toDate:参数对应于1月15日, 2010年上午8:00,两个日期之间只有8.5小时。如果你要求天数,你会得到0,因为8.5小时不到1天。可能会有这样的情况,这应该是1天。您必须决定用户在特定情况下期望的行为。如果您确实需要计算返回天数,通过两个日期之间的中间夜数计算,您可以使用类似于NSCalendar的类别。清单13中的一个。“