1

今日、私のアプリがアプリ ストアにヒットしました。ユーザーに奇妙なバグを送信してもらいました。SQLite に文字列として保存した日付を返す日付ピッカーがあります。シミュレーター、3G、itouch、iPad でアプリをテストしました。これらすべてで、期待どおりに機能します。ただし、このユーザーの 3GS では、日付ピッカーで選択された日付に 1 日が追加されます。

NSDateFormatterMediumStyle スタイルの NSDateformatter を使用して文字列に変換し、データベースに格納する以外に、日付を操作していません。

これが 3GS で異なる動作をする理由はありますか?

4

3 に答える 3

1

バグがデバイス固有の問題ではなく、iOS4 のアップグレードに関連している可能性を考慮しましたか?

私はこれと同じ問題を抱えていましたが、iOS4にアップデートした後でした。私のフォーマッタは次のようなものです:

[aDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];

そして私の日付は次のようになります:

2009-10-27 7:30:12 -0700

最大/最小/選択された日付を日付ピッカーに適用する前に、日付ピッカーモードセットを移動するだけで問題を解決できました。私の場合、これは:

aDatePicker.datePickerMode = UIDatePickerModeDate;

于 2010-11-02T11:00:47.153 に答える
0

日付フォーマッターと日付スキャナーで NSLocale を設定していることを確認してください。デフォルトでは、ユーザーのロケールが使用されますが、ユーザーのロケール以外に設定されている場合は異なる可能性があります。

于 2010-07-09T02:08:16.273 に答える
0

これは 3GS の問題ではなく、タイムゾーンの問題のようです。

これがNSDateformatterで正しいかどうかはわかりませんが (試してみます)、NSDateの description プロパティを取得すると、現地時間 (GMT オフセット付き) が取得されます。

これらのローカル タイム文字列を永続化してから、GMT を想定して非永続化すると (またはデバイスのタイムゾーンが変更された場合)、時刻が正しくなくなります。ユーザーがいるタイムゾーンを確認し、それに応じて設定されたシステム タイムゾーンでテストしてみてください (シミュレーターは MacOS タイムゾーンを使用します)。

于 2010-07-09T02:05:55.637 に答える