2011-10-29 21 views
7

Tengo un objeto NSDate del que hago dos NSStrings: la fecha y la hora. Actualmente, formato la fecha como 20111031 y la hora como 23:15.Formatear la fecha y la hora después de la configuración de la región actual del dispositivo

Lo que me gustaría hacer es formatearlo en la configuración de la región actual del dispositivo (iPhone, iPad, iPod Touch) (¡no en el idioma!). Así, por ejemplo:

  • un conjunto de dispositivos a la región nos mostraría (desde la parte superior de la cabeza) y el tiempo de 10.31.11 23:15
  • un conjunto de dispositivos a la región de los Países Bajos mostraría: 31- 10-2011 y hora 23.15
  • un conjunto de dispositivos de región sueca mostraría: 2001-10-31 y la hora 23:15

¿Cómo puedo hacer esto?

+1

formato utilizando configuración regional predeterminada del teléfono. –

Respuesta

37

Lo siguiente debe ser suficiente, porque un NSDateFormatter tiene regional predeterminada del teléfono de forma predeterminada:

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

FYI aquí es lo que sucede con los Estados Unidos, Países Bajos 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 
+0

Muchas gracias. No lo sabía (ahora me siento un poco estúpido);) –

+2

¡Es un placer! Solo sé esto porque pasé los últimos tres días lidiando con errores relacionados con NSDate y aprendiendo mucho más sobre esto que nunca esperé: P – yuji

7

Muchos gran código fragmentos aquí. Uno incluso mejor en mi mente para formatos de fecha internacional (cuando todo lo que quiero es la fecha, no el tiempo) es esto como el teléfono sabe el idioma local en la configuración:

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]); 
Cuestiones relacionadas