7

NSDateオブジェクトがあり、そこから2つのNSString(日付と時刻)を作成します。現在、日付を20111031、時刻を23:15にフォーマットしています。

私がやりたいのは、デバイス(iPhone、iPad、iPod Touch)の現在の地域設定(言語ではありません!)に合わせてフォーマットすることです。たとえば、次のようになります。

  • 米国の地域に設定されたデバイスは、(頭のてっぺんから)10.31.11と時刻11:15pmを表示します。
  • オランダの地域に設定されたデバイスは、2011年10月31日と時間23.15を表示します。
  • スウェーデンの地域に設定されたデバイスは、2001-10-31と時間23:15を表示します。

これどうやってするの?

4

2 に答える 2

37

NSDateFormatterにはデフォルトで電話のデフォルトのロケールがあるため、以下で十分です。

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

参考までに、米国、オランダ、スウェーデンで何が起こっているかを次に示します。

[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
于 2011-10-30T19:12:35.503 に答える
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]);
于 2013-07-17T14:24:14.837 に答える