NSDate 比较两个日期不起作用
NSDate Comparing Two Dates Not Working
我正在使用以下代码比较两个日期,我希望代码为 return "newDate is less",因为今天的日期是 2018-03-16,但实际上是 return ing 两个日期相同。有什么办法可以解决这个问题?我知道它一定很简单只是不能把我的手指放在上面。
NSDateFormatter *dateFormatter=[NSDateFormatter new];
NSDate *today = [NSDate date];
NSDate *newDate = [dateFormatter dateFromString:@"2018-03-14"];
if([today compare:newDate]==NSOrderedAscending){
NSLog(@"today is less");
}
else if([today compare:newDate]==NSOrderedDescending){
NSLog(@"newDate is less");
}
else{
NSLog(@"Both dates are same");
}
那是因为你的 newDate
是零。您还没有为 dateFormatter 指定日期格式。
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd"]; //missing statement in your code
NSDate *today = [NSDate date];
NSDate *newDate = [dateFormatter dateFromString:@"2018-03-14"];
现在它按预期打印输出
编辑 1:
由于 OP 想要比较没有任何时间组件的日期,我正在更新代码以执行相同的操作
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *today = [NSDate date];
NSString *todayString = [dateFormatter stringFromDate:today];
today = [dateFormatter dateFromString:todayString];
NSDate *newDate = [dateFormatter dateFromString:@"2018-03-15"];
if([today compare:newDate]==NSOrderedAscending){
NSLog(@"today is less");
}
else if([today compare:newDate]==NSOrderedDescending){
NSLog(@"newDate is less");
}
else{
NSLog(@"Both dates are same");
}
现在代码在新日期指定为 2018-03-15 时显示 Both dates are same
,在新日期指定为 2018-03-14
时显示 newDate is less
希望对您有所帮助
我正在使用以下代码比较两个日期,我希望代码为 return "newDate is less",因为今天的日期是 2018-03-16,但实际上是 return ing 两个日期相同。有什么办法可以解决这个问题?我知道它一定很简单只是不能把我的手指放在上面。
NSDateFormatter *dateFormatter=[NSDateFormatter new];
NSDate *today = [NSDate date];
NSDate *newDate = [dateFormatter dateFromString:@"2018-03-14"];
if([today compare:newDate]==NSOrderedAscending){
NSLog(@"today is less");
}
else if([today compare:newDate]==NSOrderedDescending){
NSLog(@"newDate is less");
}
else{
NSLog(@"Both dates are same");
}
那是因为你的 newDate
是零。您还没有为 dateFormatter 指定日期格式。
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd"]; //missing statement in your code
NSDate *today = [NSDate date];
NSDate *newDate = [dateFormatter dateFromString:@"2018-03-14"];
现在它按预期打印输出
编辑 1:
由于 OP 想要比较没有任何时间组件的日期,我正在更新代码以执行相同的操作
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *today = [NSDate date];
NSString *todayString = [dateFormatter stringFromDate:today];
today = [dateFormatter dateFromString:todayString];
NSDate *newDate = [dateFormatter dateFromString:@"2018-03-15"];
if([today compare:newDate]==NSOrderedAscending){
NSLog(@"today is less");
}
else if([today compare:newDate]==NSOrderedDescending){
NSLog(@"newDate is less");
}
else{
NSLog(@"Both dates are same");
}
现在代码在新日期指定为 2018-03-15 时显示 Both dates are same
,在新日期指定为 2018-03-14
newDate is less
希望对您有所帮助