NSDateFormatter e NSNumberFormatter Modifichiamo le date e i numeri

Quando iniziamo a lavorare con alcuni tipo di applicazioni spesso è necessario impostare delle date .

Infatti cocoa fornisce una classe che ci permette di lavorare con esse (NSDateFormatter) questa classe può convertire le date in stringhe e le stringhe in date

In questo tutorial non lavoreremo con l’interfaccia grafica ma utilizzeremo  solo il terminale quindi lanciamo xcode e creiamo una nuova applicazione di tipo cocoa application

Andiamo sul file.m e inseriamo questo codice :

[code lang=”objc”]

– (void)applicationDidFinishLaunching:(NSNotification *)aNotification

{

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init]

autorelease];

[formatter setTimeStyle:NSDateFormatterFullStyle];

[formatter setDateStyle:NSDateFormatterFullStyle];

NSLog(@"Data Comoleta:   %@", [formatter stringFromDate:[NSDate date]]);

[formatter setDateStyle:NSDateFormatterLongStyle];

NSLog(@"Data Completa2:   %@", [formatter stringFromDate:[NSDate

date]]);

[formatter setTimeStyle:NSDateFormatterMediumStyle];

[formatter setDateStyle:NSDateFormatterMediumStyle];

NSLog(@"Data Classica: %@", [formatter stringFromDate:[NSDate

date]]);

[formatter setTimeStyle:NSDateFormatterShortStyle];

[formatter setDateStyle:NSDateFormatterShortStyle];

NSLog(@"Data Essenziale:  %@", [formatter stringFromDate:[NSDate

date]]);

[formatter setTimeStyle:NSDateFormatterNoStyle];

[formatter setDateStyle:NSDateFormatterFullStyle];

NSLog(@"Data senza Orario:      %@", [formatter stringFromDate:[NSDate

date]]);

[formatter setTimeStyle:NSDateFormatterFullStyle];

[formatter setDateStyle:NSDateFormatterNoStyle];

NSLog(@"Solo L’ora:      %@", [formatter stringFromDate:[NSDate

date]]);

[formatter setTimeStyle:NSDateFormatterNoStyle];

[formatter setDateStyle:NSDateFormatterFullStyle];

[formatter setDoesRelativeDateFormatting:YES];

NSLog(@"Oggi stringa:     %@", [formatter stringFromDate:[NSDate

date]]);

[formatter setDateStyle:NSDateFormatterShortStyle];

NSDate *date = [formatter dateFromString:@"9/10/2010"];

NSLog(@" Oggi Data:  %@", [date description]);

}

[/code]

Questo codice mostra tutti i possibili settaggi che possiamo fare sulle date

Quando si converte una stringa in una data, è importante ricordare che la stringa data dovrebbe essere dello stesso formato come lo stile che avete impostato nel formattatore. Noterete nell’esempio di codice  che ho il tempo è impostato NSDateFormatterNoStyle e la data prevista per NSDateFormatterShortStyle e la mia stringa della data è “2010/09/10”.

Ora vedremo tutti i possibili settaggi per quanto riguardano i numeri grazie all’utilizzo di NSNumberFormatter quindi ritorniamo sul file .m e scriviamo questo codice:

[code lang=”objc”]

– (void)applicationDidFinishLaunching:(NSNotification *)aNotification

{

NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init]autorelease];

NSNumber *number = [NSNumber numberWithDouble:1234.99];

[formatter setNumberStyle:NSNumberFormatterDecimalStyle];

NSLog(@"Decimale: %@", [formatter stringFromNumber:number]);

number = [NSNumber numberWithDouble:.2];

[formatter setNumberStyle:NSNumberFormatterPercentStyle];

NSLog(@"Percenttuale: %@", [formatter stringFromNumber:number]);

number = [NSNumber numberWithDouble:200.95];

[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];

NSLog(@"Monetario: %@", [formatter stringFromNumber:number]);

number = [NSNumber numberWithDouble:200.95];

[formatter setNumberStyle:NSNumberFormatterScientificStyle];

NSLog(@"Scientifico: %@", [formatter stringFromNumber:number]);

number = [NSNumber numberWithDouble:200.95];

[formatter setNumberStyle:NSNumberFormatterSpellOutStyle];

NSLog(@"Letterario: %@", [formatter stringFromNumber:number]);

NSLocale *locale = [[[NSLocale alloc]initWithLocaleIdentifier:@"es"] autorelease];//impostiamo la lingua

[formatter setLocale:locale];

NSLog(@"Lingua straniera: %@", [formatter stringFromNumber:number]);

}

[/code]

Nel codice che abbiamo usato ci sono i cinque diversi stili di formato numerico per formattare un oggetto NSNumber. È inoltre possibile fornire NSNumberFormatter con un NSLocale che contribuirà con la localizzazione dei numeri. Notate come abbiamo fissato una lingua  (spagnolo) quando si usa lo stile NSNumberFormatterSpellOutStyle.Questo converte il numero in una lingua che abbiamo impostato es
allo spagnolo.