2009-11-25 7 views
9

Ich möchte zum Beispiel 12/11/2005 im Format mm/dd/yyyy geben. Kann ich 12/11/2005 direkt zu NSDate initialisieren? Irgendeine Hilfe?Wie kann ich ein Datum für NSdate initialisieren?

gibt es eine Warnung aus und stürzt ab, wenn ich es als

NSDate *then = [NSDate dateWithNaturalLanguageString:02/11/2009 locale:nil]; 
+0

Diese Methode ist nur für Mac OS X v10.0 und höher, es ist nicht verfügbar in iOS –

+0

'02/11/2009' ist kein NSString. '@" 02/11/2009 "ist. –

Antwort

17

Was Sie tun müssen, ist so etwas wie dieses:

NSDateFormatter *mmddccyy = [[NSDateFormatter alloc] init]; 
mmddccyy.timeStyle = NSDateFormatterNoStyle; 
mmddccyy.dateFormat = @"MM/dd/yyyy"; 
NSDate *d = [mmddccyy dateFromString:@"12/11/2005"]; 
NSLog(@"%@", d); 
1
+0

es gibt Warnung ... stürzt ab ..... wenn ich als deklariere NSDate * dann = [NSDate dateWithNaturalLanguageString: 02/11/2009 locale: nil]; –

+0

Sie müssen einen NSString übergeben. NSDate * then = [NSDate DatumWithNaturalLanguageString: @ "02/11/2009" locale: nil]; – sosborn

0

Eine andere Lösung könnte die Verwendung von NSCalendar und NSDa sein teComponents, seit + dateWithNaturalLanguageString: ist veraltet.

Zum Beispiel möchten Sie ein NSDate bis 15. August initialisiert 2001. Dies ist der Code, der die Arbeit für Sie:

NSCalendar *g = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; 

NSDateComponents *comps = [[NSDateComponents alloc] init]; 
comps.year = 2001; 
comps.month = 8; 
comps.day = 15; 

NSDate *myDate = [g dateFromComponents:comps]; 

oder einen anderen Weg:

let earliestDate = calendar.dateWithEra(1, year: 2012, month: 1, day: 1, hour: 0, minute: 0, second: 0, nanosecond: 0) 

die earliestDate einstellen NSDate to 01/01/2012

Verwandte Themen