質問

ユーザーが時間表示のためにiPhoneを12時間モードに設定したかどうかを知りたいだけです。

NSLocale クラスは(例や明らかに有用なメソッドのない曖昧で不明確な用語で)私が望んでいたことを説明しているように見えました。

だから私はいくつかの NSLocale オブジェクトを次のように作成しました:

NSLocale *systemLocaleApparently = [NSLocale systemLocale];
NSLocale *currentLocaleWithLotsOfGoodies = [NSLocale autoupdatingCurrentLocale];

デバッガまたは NSLog()を使用してこれらのオブジェクトを検査する場合、次の行に沿って何かを取得できます。

<CFLocale 0x1278e0 [0x382084f8]>{type = system, identifier = ''} 

現在のロケールにはID文字列が含まれていますが、他には何もありません。

ドキュメントから、ロケールから値を検索できます。これらの1つは NSCalendar オブジェクトです。それで私はそれを取り戻し、それを見てみると、「グレゴリオ」であることがわかります。

すべては明らかに誰かに役立つ...しかし、私が本当に欲しいのは、主に NSDateFormatters がしないように、実際のシステムプロパティのすべてを示す属性の素晴らしい大きな辞書ですフォーマッターに en_US_POSIX ロケールと固定の setDate 形式を使用するように強制しているにもかかわらず、ユーザーが12時間形式を選択したときに爆発し続けます。

NSCalendarDate はこれらの問題に遭遇したことはないと確信しています...)

願わくば、私は露骨に(そして恐らく恥ずかしいことに)明らかな何かを見逃しているが、誰かがそれを私と共有するかもしれない。お願いします:)

役に立ちましたか?

解決

ユーザーが時間形式を12時間形式または24時間形式に設定したかどうかを確認する方法の1つを次に示します。

NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setTimeStyle:NSDateFormatterMediumStyle];
// Look for H (24-hour format) vs. h (12-hour format) in the date format.
NSString* dateFormat = [formatter dateFormat];
BOOL using24HourClock = [dateFormat rangeOfString:@"h"].location == NSNotFound;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top