4

iOS 7 で日付をフォーマットしようとすると、予期しない曜日の結果が得られます。Apple のドキュメントには iOS 7 のパターンは記載されていませんが、iOS 6 用に提供されているパターンはこちらにあります。曜日欄を見ると

曜日 - 短い曜日には 1 ~ 3 文字、完全な名前には 4 文字、狭い名前には 5 文字を使用します。

ただし、4 文字のフル ネーム フォーマッタ文字列を機能させることができません。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEE"];
NSLog(@"%@", [formatter stringFromDate:date]);

「水曜日」を出力します

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEEE"];
NSLog(@"%@", [formatter stringFromDate:date]);

「Wed」も出力しますが、「Wednesday」と出力する必要があります

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEEEE"];
NSLog(@"%@", [formatter stringFromDate:date]);

「わ」をプリント

iOS 7 で使用する必要がある書式設定文字列の新しいセットはありますか、それとも何か間違っていますか?

4

2 に答える 2

5

他の人が気づいたように、ロケールの問題のようです。

次のような既知のロケールを強制してみてください

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
// or
NSLocale *locale = [NSLocale currentLocale];
[formatter setLocale:locale];
[formatter setDateFormat:@"EEEE"];
NSLog(@"%@", [formatter stringFromDate:date]);
于 2013-10-18T15:47:22.883 に答える
0

新しいUnicode 標準(2013 年 9 月 18 日にリリース) がありましたが、EEEE 形式は変更されません。

これはロケールに依存していると思います。iOS は、デフォルトのロケールによりよく一致するため、名前を短くして賢くしようとしている可能性があります。NSLocaleいくつかの異なる をフォーマッタに追加して、結果を記述してみてください。

于 2013-10-18T15:36:56.600 に答える