3

私はカレンダーを作成していて、月の最初の日を見つけるために

[formatter setDateFormat:@"e"];
int startDay = [[formatter stringFromDate:newDate] intValue];

デバイスでは、これは正しく機能し、月の1日は正しい日になります。しかし、シミュレーターでは翌日です。シミュレーターについてはそれほど重要ではありませんが、何か間違ったことをしたと思って、私を夢中にさせるようなものです。フォーマッターのロケールを設定しようとしましたが、違いはありません。誰かがこれに光を当てることができますか?

ちなみに、これよりもカレンダーを作成するためのより良い方法はありますか?

更新:ロケールを設定しないと、デバイスでは正常に機能するようですが、シミュレーターでは機能しません。ロケールをen_USに設定すると、どちらも機能しません。それが何かを変えるなら私はオーストにいますが、私は米国とオーストの両方が同じカレンダーを持っているとかなり確信しています:/

4

3 に答える 3

0

これに対する解決策はないようです。デバイスのタイムゾーンを変更しても問題は発生せず、すべてのログ出力で適切なタイムゾーンが報告されますが、NSDateは、シミュレーターの2つの異なる場所(おそらくクパチーノ用とローカル用)からタイムゾーンを取得しているようです。

月の最初の日を取得するための他の人々の解決策を見ると、それは私のコードと同じであり(私がコピーしなかったので奇妙です)、誰も問題を報告していません、おそらくそれらのユーザーは米国にいたので問題はありませんでしたt表面。コンピュータのタイムゾーンを変更しても何も起こりません。

于 2010-03-18T06:07:03.253 に答える
0

これは、渡す日付によっては正しい動作のように聞こえます。NSDateは、ユニバーサルタイムの正確なポイントに対応します。その時点では、あるタイムゾーンでは月曜日、別のタイムゾーンでは火曜日になる可能性があります。

あなたはおそらく欲しいです[[NSCalendar currentCalendar] firstWeekDay]

于 2010-03-17T06:49:46.657 に答える
0

エミュレータとデバイスで異なるカレンダーがある場合はどうなりますか?1つはfirstWeekDayとして月曜日を持ち、もう1つは日曜日を持ちます。おそらくこれが問題の原因である可能性があります...

于 2010-08-25T14:22:41.250 に答える