Dar formatting a la date y la hora después de la configuration de la región actual del dispositivo.

Tengo un object NSDate del cual hago dos NSStrings: la date y la hora. Actualmente formatting la date como 20111031 y la hora como 23:15.

Lo que me gustaría hacer es formatearlo en el dispositivo (iPhone, iPad, iPod Touch) configuration regional actual (¡no en el idioma!). Entonces, por ejemplo:

  • Aparecerá un dispositivo configurado en la región de EE. UU. (Desde la parte superior de mi cabeza) 10.31.11 y a las 11:15 p. M.
  • Aparecerá un dispositivo en la región de los Países Bajos: 31-10-2011 y la hora 23.15
  • Aparecerá un dispositivo configurado en la región sueca: 2001-10-31 y la hora 23:15

¿Cómo puedo hacer esto?

Lo siguiente debería ser suficiente, porque un NSDateFormatter tiene la configuration regional pnetworkingeterminada del teléfono:

NSDate *date = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setTimeStyle:NSDateFormatterShortStyle]; [dateFormatter setDateStyle:NSDateFormatterShortStyle]; NSLog(@"%@",[dateFormatter stringFromDate:date]); 

Para su información, esto es lo que sucede con EE. UU., Holanda y Suecia:

 [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; NSLog(@"%@",[dateFormatter stringFromDate:date]); // displays 10/30/11 7:09 PM [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"nl_NL"]]; NSLog(@"%@",[dateFormatter stringFromDate:date]); // displays 30-10-11 19:09 [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"sv_SE"]]; NSLog(@"%@",[dateFormatter stringFromDate:date]); // displays 2011-10-30 19:09 

Muchos grandes fragments de código aquí. Uno aún mejor en mi mente para los formattings de date internacionales (cuando todo lo que quiero es la date, no la hora) es esto, ya que el teléfono conoce el idioma local en la configuration:

 NSDate *date = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:NSLocaleIdentifier]]; [dateFormatter setTimeStyle:NO]; [dateFormatter setDateStyle:NSDateFormatterShortStyle]; NSLog(@"%@",[dateFormatter stringFromDate:date]);