在Objective-C中,如何测试今天是否不是在特定日期之后?
我正在使用以下方式,但我很好奇是否有更好的方法或其他替代方案来解决这个问题。
NSString *dateString = @"20140928"; NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"yyyyMMdd"]; NSDate *expirationDate = [dateFormat dateFromString:dateString]; NSDate *today = [NSDate date]; if ([today laterDate:expirationDate] != today) { NSLog(@"Today is not after expirationDate"); }
答案 0 :(得分:2)
您的大多数代码都会获得到期日期,因此无法计算。
获得日期之后,使用laterDate:
或compare:
与[NSDate date]
一起使用是两种简单的方法。
你也可以这样做:
if ([expirationDate timeIntervalSinceNow] > 0) {
// expiration date is after "now"
}
这样就无需使用[NSDate date]
。
答案 1 :(得分:0)
作为替代方案,有:
if ([today compare:expirationDate] == NSOrderedAscending)
// expirationDate comes "after" today
if ([today compare:expirationDate] == NSOrderedDescending)
// expirationDate comes "before" today
if ([today compare:expirationDate] == NSOrderedSame)
// expirationDate equals today