9

我想将当前日期与另一个日期进行比较,如果该日期早于当前日期,那么我应该停止下一步操作。我怎样才能做到这一点?

我有今天的日期yyyy-MM-dd格式。我需要检查这种情况

if([displaydate text]<currentdate)
{
    //stop next action 
}

如果displaydate小于今天的日期,则必须输入该条件。

4

4 回答 4

35
NSDate *today = [NSDate date]; // it will give you current date
NSDate *newDate = [dateFormatter dateWithString:@"xxxxxx"]; // your date 

NSComparisonResult result; 
//has three possible values: NSOrderedSame,NSOrderedDescending, NSOrderedAscending

result = [today compare:newDate]; // comparing two dates

if(result==NSOrderedAscending)
    NSLog(@"today is less");
else if(result==NSOrderedDescending)
    NSLog(@"newDate is less");
else
    NSLog(@"Both dates are same");

从这个答案中得到了你的解决方案How to compare two dates in Objective-C

于 2012-11-05T09:27:59.387 回答
1

替代@NNitin Gohel's答案。

使用NSTimeIntervalie进行比较NSDate timeIntervalSince1970

NSTimeInterval *todayTimeInterval = [[NSDate date] timeIntervalSince1970];
NSTimeInterval *previousTimeInterval = [previousdate timeIntervalSince1970];

if(previousTimeInterval < todayTimeInterval)
   //prevous date is less than today
else if (previousTimeInterval == todayTimeInterval)
   //both date are equal
else 
   //prevous date is greater than today
于 2012-11-05T09:31:34.957 回答
0

你可以仔细看看这个关于 NSDateFormatter 的教程,当你有你的 NSDate 对象时,你可以将它与另一个 NSDate 进行比较并得到一个 NSTimeInterval ,它是以秒为单位的差异。

NSDate *nowDate = [NSDate date];
NSTimeInterval interval = [nowDate timeIntervalSinceDate:pastDate];
于 2012-11-05T09:29:12.687 回答
0

类的一些方法NSDate是:

  1. isEarlierThanDate. // 使用这个方法你可以找出日期是不是以前的..
  2. isLaterThanDate
  3. minutesAfterDate.
  4. minutesBeforeDate. ETC..

还可以在 iPhone SDK 中使用 NSDate 的许多方法查看此链接。

如何使用 iphone-sdk 与现实世界约会

更新

//Current Date
    NSDate *date = [NSDate date];
    NSDateFormatter *formatter = nil;
    formatter=[[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd"];

使用此波纹管方法将 NSString 日期转换为 NSDate 格式只需将此方法粘贴到 your.m 文件中

- (NSDate *)convertStringToDate:(NSString *) date {
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
NSDate *nowDate = [[[NSDate alloc] init] autorelease];
[formatter setDateFormat:@"yyyy-MM-dd"];
// NSLog(@"date============================>>>>>>>>>>>>>>> : %@", date);
date = [date stringByReplacingOccurrencesOfString:@"+0000" withString:@""];
nowDate = [formatter dateFromString:date];
// NSLog(@"date============================>>>>>>>>>>>>>>> : %@", nowDate);
return nowDate;
}

之后,当您想使用它时,只需像下面这样使用..

NSDate *tempDate2 = [self convertStringToDate:yourStringDate];

然后尝试像这样比较..

if (tempDate2 > nowDate)
于 2012-11-05T09:32:09.923 回答