2

我有三个日期:(1)previousDate(2)currentDate(3)nextDate,我想检查currentDate 是否晚于上一个日期并且早于nextDate。我怎么做?

4

6 回答 6

8
 NSDateFormatter *df= [[NSDateFormatter alloc] init];

[df setDateFormat:@"yyyy-MM-dd"];

NSDate *dt1 = [[NSDate alloc] init];

NSDate *dt2 = [[NSDate alloc] init];

dt1=[df dateFromString:@"2011-02-25"];

dt2=[df dateFromString:@"2011-03-25"];

NSComparisonResult result = [dt1 compare:dt2];

switch (result)

{

     case NSOrderedAscending: NSLog(@"%@ is greater than %@", dt2, dt1); break;

     case NSOrderedDescending: NSLog(@"%@ is less %@", dt2, dt1); break;

     case NSOrderedSame: NSLog(@"%@ is equal to %@", dt2, dt1); break;

     default: NSLog(@"erorr dates %@, %@", dt2, dt1); break;
}
于 2011-04-20T10:39:08.230 回答
6

我想你正在使用NSDate类。

您可以使用isEqualToDate比较两个 NSDate 对象。并且检查 currentdate 的earlyDatelaterDate大于上一个日期并且小于下一个日期。

于 2010-02-04T12:14:25.130 回答
4

我只是用它来检查它:

if ([[currentDate laterDate:nextDate] isEqualToDate:nextDate]) {
    NSLog(@"currentDate is earlier than nextDate");
}
if ([[currentDate laterDate:previousDate] isEqualToDate:currentDate]) {
    NSLog(@"currentDate is later then previousDate");
}

对我来说很好!感谢@Luca Matteis 提示“laterDate:”

于 2013-02-01T17:44:47.173 回答
2

我们可以在 swift 5.0 中轻松比较两个日期

    switch dateOld.compare(dateNew) {
    case .orderedAscending:
        // Put your code for greater
        break

    case .orderedDescending:
        // Put your code less
        break;

    case .orderedSame:
        // Put your code for equal
        break
}
于 2019-08-02T06:16:46.150 回答
0

NSDate 对象还实现了有据可查的 -compare: 方法。

于 2010-02-04T12:25:12.923 回答
0

只需使用以下compare消息进行两次比较NSDate

if ([previousDate compare:currentDate] == NSOrderedAscending &&
    [nextDate compare:currentDate] == NSOrderedDescending) {
    NSLog(@"current date is in between previous and next date (non-inclusive)");
}
于 2014-07-04T07:40:25.550 回答