0

重複の可能性:
タイムスタンプ間隔から欠落している月を取得する

サーバーから秒単位で時間を受信して​​います。次に、以下のコードを使用してそれらを月に変換しています。

NSDateFormatter * dateFormatter=[[[NSDateFormatter alloc]init]autorelease];
[dateFormatter setDateFormat:@"MMM"];
[dateFormatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:timeStamp]];

問題は、最初に 1 月を取得してから 2 回目にサーバーから 4 月を取得する場合のように、サーバーから毎月取得しないことですが、iPhone 画面に 2 月と 3 月 (欠落している月) を表示する必要があります (サーバーのユーザーは自分の月を変更できません)。コードなので、最後にそれを行う必要があります)。不足している月を取得する方法を教えてください。

同じ問題は、サーバーから 11 月と 2 月を取得することもありますが、12 月と 1 月も表示する必要があります。

4

1 に答える 1

0

手早く汚い解決策として、すべての月の配列を作成し、後の月から開始して、前の月に到達するまで月の配列を逆方向にループすることができます。

次のように、NSCalendar と NSDateComponents を使用すると、より堅牢でさらに優れたものになります。

NSDateComponents* dateComponents = [[NSDateComponents alloc]init];
[dateComponents setMonth:1];
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDate* newDate = [calendar dateByAddingComponents:dateComponents toDate:originalDate     options:0];
[dateComponents release];

これにより、日付が1か月増減します。

于 2012-10-15T12:20:00.203 に答える