Developer
Developer

Reputation: 6465

How to compare just dates not the time?

How can I compare the dates only, not the time. I am using

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];

NSString *tempDate = @"2-2-2012"; //Dynamic Date
NSDate *dateString = [dateFormatter dateFromString:tempDate];
NSLog(@"%@",dateString);

It logs this: 2012-02-01 18:30:00 +0000

NSDate *now = [NSDate date];//Current Date
NSLog(@"%@",now);

It logs this: 2011-04-04 14:49:45 +0000

I want to compare Dynamic date and current date, I don't need time. I may not using the correct NSDateFormatter. Can anyone of you tell me how to do this? If I am not clear, please let me know.

Suppose I have to strings

date1 = 3-2-2011;
date2 = 4-5-2020;

I want to convert them in date, only after that I can compare them. Its not happening from my date Formatter. Please have a look.

Thanks!

Upvotes: 1

Views: 1774

Answers (3)

unexpectedvalue
unexpectedvalue

Reputation: 6139

   NSDate *date = [NSDate date];
NSDateFormatter *formatter = nil;
formatter=[[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterNoStyle];
[formatter setLocale:[NSLocale autoupdatingCurrentLocale]];

NSString *dateString = [formatter stringFromDate:date];
[formatter release];

Upvotes: 0

Parth Bhatt
Parth Bhatt

Reputation: 19469

Simplest way is to compare date by converting it into string.

Sample Code is as shown below:

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

NSString *dateString = [formatter stringFromDate:date];
[formatter release];

   //Other Date say date2 is of type NSDate again
   NSString *date2String = [formatter stringFromDate:date2];

  //Comparison of Two dates by its conversion into string as below
 if([date2String isEqualToString:dateString])
 {
       //Your logic if dates are Equal
 }
 else if(![date2String isEqualToString:dateString])
 {
        //Your Logic if dates are Different
 }

EDIT:

Checkout this link.

Comparing dates

http://www.iphonedevsdk.com/forum/iphone-sdk-development/64625-how-compare-2-dates.html

Hope This Helps You. :)

Upvotes: 2

Caleb
Caleb

Reputation: 125007

Use NSCalendar and NSDateComponents to get a date components object. Then you can look at only those parts of the date that you care about.

If you're just trying to determine whether two dates are the same, regardless of time, one way to go is to use NSDate's -timeIntervalSinceDate: method. If the time interval returned is less than 86,400 seconds (i.e. 24 hours * 60 minutes * 60 seconds) then you can feel fairly sure that it's the same day. Changes related to such things as daylight savings time and leap seconds introduce some possibility of error... if that's a problem, go with NSDateComponents.

Upvotes: 0

Related Questions