测试日期列表是否现在小于日期

时间:2014-02-08 22:16:25

标签: ios iphone nsdate nsdateformatter

这里我有一个日期列表,我格式化了,我想要的日期和我的列表中的日期一样,所以我减少了currentNow为当前日期创建了一个变量。

所以我想显示日期以下的日期。

所以我这样做但是它不起作用我想知道是否没有方法来测试日期是否低于当前日期

    //format date now
    NSDateFormatter *currentNow = [[NSDateFormatter alloc] init];
    [currentNow setDateFormat:@"d/MM/yyyy"];
    NSString *stringCurrentNow = [currentNow stringFromDate:now];

日期测试

// date test
    NSDateFormatter *dateTest = [[NSDateFormatter alloc] init];
    [dateTest setDateFormat:@"d/MM/yyyy"];
    NSString *stringdateTest = [dateTest stringFromDate:date];

我的考试

if(stringdateTest > stringCurrentNow ){
        NSLog(@"not pass =>%@",stringCurrentNow);
}else{
        NSLog(@"the date has already passed => %@",stringdateTest);
}

但它不起作用,他告诉我日期已经发生,当我查看结果日期是两周后,所以我的测试不起作用或我没有使用正确的方法。

提前谢谢

1 个答案:

答案 0 :(得分:2)

  1. 您无法使用><==等比较对象。您最终会比较指针地址,而对象的地址与其值或排序顺序无关
  2. 在有意义的地方,NSObject的子类支持compare:方法,该方法以相对顺序的有意义的方式比较相似类的两个对象。所有NSObject子类都支持isEqual:
  3. documentation for NSDate describes compare: is even more detail
  4. 如果您想比较字符串日期而不是NSDates,您需要以有意义的顺序获取日期,首先是最高有效数字(年份)。例如,yyyyMMdd。请注意,您应该使用固定宽度字段(因此“dd”而不是“d”),否则您将获得一些非常奇特的排序顺序。当然,在比较字符串时,您需要使用NSString的compare:版本。