2011-01-05 6 views
1

„31-Dec-2010 9.00 bis 01.00 Uhr“mit NSDate Arbeiten und mit Daten in Objective C

Nehmen Sie die oben NSString zum Beispiel Vergleicht man, ich brauche es zum Beispiel auf 2 NSDates konvertieren 31-Dez-2010 9:00 AM UND 31-Dez-2010 1:00 PM

Dann vergleichen Sie es mit dem aktuellen Datum, um zu sehen, ob das aktuelle Datum innerhalb der angegebenen Daten fällt.

So 31-Dec-2010 10:00 Uhr würde innerhalb fallen.

Ich frage mich Was sind die besten Praktiken/Tricks sind mit Objective C, um dies elegant zu tun?

+0

Zum Vergleich mag Umwandlung ich Unix-Zeit (das in gebaut obj-c) aber das ist nur meine Vorliebe! –

+0

Ich muss immer länger denken, wenn ich Code lese, der die Methode compare: von NSDate verwendet, also habe ich eine Kategorie auf NSDate geschrieben, die lessThan :, lessThanOrEqual: usw. implementiert, die compare: drunter verwendet. Ich finde es viel einfacher, beim Codieren zu lesen. – nall

+0

Teilen Sie den Code! : P –

Antwort

0

ich es wie so tun endete:

NSString *temp = [[dateString allValues] objectAtIndex:0]; 

    NSLog(@"temp: %@", temp); 


    NSArray *tokens = [temp componentsSeparatedByString: @" "]; 


    NSArray *tokenOneDelimited = [[tokens objectAtIndex:0] componentsSeparatedByString: @"-"]; 


    NSString *dateStr1 = [NSString stringWithFormat: @"%@-%@-%@ %@", [tokenOneDelimited objectAtIndex:2], 
                     [tokenOneDelimited objectAtIndex:1], 
                     [tokenOneDelimited objectAtIndex:0], 
                     [tokens    objectAtIndex:1]]; 

    NSString *dateStr2 = [NSString stringWithFormat: @"%@-%@-%@ %@", [tokenOneDelimited objectAtIndex:2], 
          [tokenOneDelimited objectAtIndex:1], 
          [tokenOneDelimited objectAtIndex:0], 
          [tokens    objectAtIndex:3]]; 

    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 

    [dateFormatter setDateFormat:@"yyyy-MMM-dd hh:mma"]; 

    NSDate *myDate1 = [dateFormatter dateFromString: dateStr1]; 

    NSDate *myDate2 = [dateFormatter dateFromString: dateStr2]; 

    NSDate *currentDate = [NSDate date]; 

    NSComparisonResult comparison = [currentDate compare: myDate1]; 

    NSComparisonResult comparison2 = [currentDate compare: myDate2]; 


    if ( 
     comparison  == NSOrderedDescending && 
     comparison2  == NSOrderedAscending 
     ) 
    { 
     NSLog(@"is On now");