/ / Porównywanie dwóch dat (bieżąca data i data z bazy danych) - sql, target-c, nsdate

Porównywanie dwóch dat (bieżącej daty i daty z bazy danych) - sql, cel-c, nsdate

próbuję porównać dwie daty, jedną z bazy danych, a drugą jest aktualna data systemu. data z bazy danych jest przetwarzana na ciąg znaków i chcę ją przekształcić w NSDate . Problem, z którym się teraz zmagam NewsDate jest nil.

  -(void)viewDidLoad
{

// Do any additional setup after loading the view.
self.title=self.ntitle;
_lblDate.text=self.ndateNews;
_lblDetail.text=self.ndetails;
_lblTitre.text=self.title;
NSDate *currDate=[NSDate date];
NSDateFormatter *DateFormats=[[NSDateFormatter alloc ]init];
[DateFormats setDateFormat:@"MM-DD-yyyy hh:mm:ss +EEEE"];
NSLog(@"selected date  %@",self.ndateNews);
NSDate *NewsDate=[DateFormats dateFromString:self.ndateNews];
NSLog(@"string transformed   into date %@",NewsDate);
NSLog(@" system date %@",currDate);



if ([currDate isEqualToDate:NewsDate]){

_lblDate.text=@"today";

}

}

Odpowiedzi:

1 dla odpowiedzi № 1

Używasz niewłaściwego wzorca formatu daty zobacz tę stronę, aby uzyskać informacje.

yyyy-MM-dd"T"HH:mm:ssZZZZZ

Jest tym, czego chcesz dla swojego formatu daty.

Także jeśli chcesz to sprawdzić NewsDate jest dzisiaj powinieneś użyć:

BOOL today = [[NSCalendar currentCalendar] isDateInToday:NewsDate];

Sprawdzanie, czy data jest równa NSDate date chciałbym, żeby daty musiały się zgadzać dokładnie - do milisekundy!

Zauważ, że -isDateInToday: jest Tylko iOS 7. Zostaw komentarz, jeśli chcesz wersję, która działa również na iOS 6 :)