2

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

クラスは、NSLocale私が求めていたものを(例や明らかに有用なメソッドのない漠然とした不特定の用語で)説明しているように見えました。

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

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

デバッガーまたは を使用してこれらのオブジェクトを調べるNSLog()と、次の行に沿ったものが得られます。

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

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

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

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

(私は確かNSCalendarDateにこれらの問題に慣れたことはありません...)

露骨に(そしておそらく恥ずかしいほど)明らかに何かが欠けていることを願っていますが、おそらく誰かがそれを私と共有してくれるでしょう。お願いします :)

4

1 に答える 1

3

ユーザーが時間形式を 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;
于 2009-09-19T00:37:48.430 に答える