1

だから私はいくつかのデータが Web サービスから返され、UIDatePickerそれに応じて調整されるアプリケーションを持っています。日付は次の形式で返されます。

12-05-2013 16:05 (dd-mm-yyyy hh:mm)

時刻は 24 時間形式で保存されますが、UIDatePicker はデバイスの設定に応じて 12 時間または 24 時間のいずれかになります。データは JSON 配列で提供され、重要な potdd です。私が設定している日付ピッカーは、potddatepicker と呼ばれます。

NSDateFormatter *inputFormat = [[NSDateFormatter alloc] init];
[inputFormat setDateFormat:@"dd-MM-yyy hh:mm"];
NSDate *inputDate = [inputFormat dateFromString: [jsonObjects objectForKey:@"potdd"]];

NSDate *potdd = inputDate;
[_potddatepicker setDate:potdd];

日付が 12:00 より前に設定されている場合は、正常に機能します。ただし、日付が 12 時以降の 24 時間形式で保存されている場合、次の例外でクラッシュします。

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: date'

日付ピッカーのためだけに時刻を 12 時間形式に強制し、それが出てきたときに強制的に 24 時間形式に戻すことは特にしたくありません。どうすればこれに対処できるか知っている人はいますか?データベースに保存されている時刻の形式を変更できません。

ありがとう!

4

2 に答える 2

7

あなたのエラーは日付ピッカーとは何の関係もありません。

文字列の解析に間違った日付形式を使用しています。必要なもの:

[inputFormat setDateFormat:@"dd-MM-yyyy HH:mm"]; // HH is 24-hour, hh is 12-hour

また、固定形式で作業しているため、日付フォーマッタのロケールを に設定する必要がありますen_US_POSIX

于 2013-06-29T20:25:46.673 に答える
3

入力形式HHの代わりに欲しいだけだと思います。は 24 時間、12 時間です。最初の の代わりにあなたも欲しいと思います。(は 2 桁の月の指定子です。は 2 桁の分の指定子です。分を 2 回設定する必要はありません!)hhHHhhMMmmMMmm

したがって、値12-05-2013 16:05は - の形式では無効ですdd-mm-yyyy hh:mmが、 では有効ですdd-MM-yyyy HH:mm

詳細については、Unicode Date Format Patternsのドキュメントを参照してください。基本的には、パターンが入力データと一致するように注意する必要があります。ピッカーの UI 設定が JSON データ入力形式に依存しないことを願っていますが、私は iOS 開発に十分に取り組んでいるわけではありません。

于 2013-06-29T20:25:24.410 に答える