2011-10-29 15 views
7

私は2つのNSStringsを作るNSDateオブジェクトを持っています:日付と時刻。現在、私は日付を20111031、時刻は23:15と書式を設定しています。デバイスの現在の地域設定後の日付と時刻のフォーマット

私がしたいことは、デバイス(iPhone、iPad、iPod Touch)の現在の地域設定(言語ではありません!)にフォーマットすることです。だから、例えば:

  • 領域に設定されているデバイスは、米国が(私の頭の上から)表示されるでしょう10.31.11と時間23:15
  • オランダ領域に設定されているデバイスが表示されるでしょう:31- 10から2011までと時間23.15
  • 領域に設定されているデバイスのスウェーデンは、表示されるでしょう:2001年10月31日23時15分と時間

を私はこれをどのように行うことができますか?

+1

フォーマット:携帯電話は、設定でロケールの言語を知っているとして、国際的な日付形式(私が望むすべては日付、ない時間であるとき)のためのより良い私の心の中の一つがこれです。 –

答えて

37

NSDateFormatterは、デフォルトでは、電話機のデフォルトロケールを持っているので、以下には、十分なはずです:

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

FYIここでは、米国で何が起こるかだ、オランダ、スウェーデン:

[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

多くのありがとう。それを知らなかった。 (今はちょっと愚かだと感じる);) –

+2

私の喜び!私はこれを知っているだけです。なぜなら私は過去3日間NSDate関連のバグを扱い、私がこれまでに望んでいたよりも、 – yuji

7

多くの偉大なコードここにスニペット。携帯電話のデフォルトロケールを使用して

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]); 
関連する問題