2009-11-25 22 views
9

Desidero fornire, ad esempio, 12/11/2005 nel formato mm/dd/yyyy. Posso inizializzare 12/11/2005 in NSDate direttamente? Qualsiasi aiuto?Come posso inizializzare una data su NSdate?

dà un avvertimento e si blocca quando dichiaro come

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

Questo metodo è solo per Mac OS X v10.0 e versioni successive, non è disponibile in iOS –

+0

'02/11/2009' non è un NSString. '@" 02/11/2009 "' è. –

risposta

17

Quello che dovete fare è qualcosa di simile:

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

avvisa ... si blocca ..... quando dichiaro come NSDate * then = [Data NSDateWithNaturalLanguageString: 02/11/2009 locale: nil]; –

+0

Devi passargli una NSString. NSDate * then = [NSDate dateWithNaturalLanguageString: @ "02/11/2009" locale: nil]; – sosborn

0

Un'altra soluzione potrebbe essere l'uso di NSCalendar e NSDa teComponents, dal + dateWithNaturalLanguageString: obsoleto.

Per esempio si desidera un NSDate inizializzato al 15 agosto 2001. Questo è il codice che funziona per voi:

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]; 

o in un altro modo è:

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

per impostare l'earliestDate NSData al 01/01/2012

Problemi correlati