2011-10-29 22 views
7

İki NSStrings yaptığım bir NSDate nesnesi var: Tarih ve saat. Şu anda tarihi 20111031 ve saati 23:15 olarak biçimlendiriyorum.Cihazın geçerli bölge ayarlarından sonra tarih ve saat formatı

Yapmak istediğim, aygıtı (iPhone, iPad, iPod Touch) geçerli bölge ayarlarına (dil değil!) Biçimlendirmektir. Yani örneğin:

  • bölgeye ayarlanmış bir cihaz ABD (kafamın üstünden) gösterecek 10.31.11 ve saat 11:15
  • bölgeye ayarlanmış bir cihaz Hollanda gösterir: 31- 10-2011 ve zaman 23.15
  • gösterirdi bölge İsveççe ayarlı bir cihaz: 2001/10/31 ve saat 23:15

bunu nasıl yapabilirim?

+1

Biçim: telefon ayarlarında yerel dilini bildiği gibi bir (tek istediğim tarih değil, zamanı geldiğinde) uluslararası tarih biçimleri için zihnimde daha iyi budur. –

cevap

37

bir NSDateFormatter varsayılan olarak telefonun varsayılan yerel olduğundan şu, yeterli olacaktır:

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

Bilginize burada ABD ile olan budur, Hollanda ve İsveç:

[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

Çok teşekkürler. Bunu bilmiyordum. (şimdi biraz aptal hissediyorum))) –

+2

Benim için zevk! Bunu sadece biliyorum, çünkü NSDate ile ilgili hatalarla uğraşırken son üç günü harcadım ve umduğumdan çok daha fazla şey öğrenmek istiyorum: P – yuji

7

Birçok büyük kod snippet'ler burada. Telefonun öntanımlı yerel kullanılarak

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]); 
İlgili konular