简体   繁体   中英

How to compare current date to previous date in iphone?

I would like to compare the current date with another date, and if that is date is earlier than the current date, then I should stop the next action. How can I do this?

I have todays date in yyyy-MM-dd format. I need to check this condition

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

Here if displaydate is less than todays date then it has to enter that condition.

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

got your solution from this answer How to compare two dates in Objective-C

Alternative to @NNitin Gohel's answer.

Compare using NSTimeInterval ie 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

Some methods of NSDate class are:

  1. isEarlierThanDate . // using this method you can find out the date is previous or not..
  2. isLaterThanDate
  3. minutesAfterDate .
  4. minutesBeforeDate . etc..

also see this link with many methods of NSDate in iPhone SDK..

how-to-real-world-dates-with-the-iphone-sdk

Update

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

use this bellow method for convert NSString date to NSDate format just paste this method in your.m file

- (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;
}

after that when you want to use it just use like bellow..

NSDate *tempDate2 = [self convertStringToDate:yourStringDate];

and then try to compare like this..

if (tempDate2 > nowDate)

You can have a closer look at this Tutorial about NSDateFormatter and when you have your NSDate object you can compare it to another NSDate and get an NSTimeInterval which is the difference in seconds.

NSDate *nowDate = [NSDate date];
NSTimeInterval interval = [nowDate timeIntervalSinceDate:pastDate];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM