如何测试今天是否在特定日期之后?

时间:2014-07-29 02:55:04

标签: objective-c date nsdate

在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");
}

2 个答案:

答案 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