-2

サーバーから時間を秒単位で受け取ってから、次のコードを使用して tjose 秒を月に変換しています。

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

2 つの日付の差をタイムスタンプとして比較できます

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

NSTimeInterval month = 60.0 * 60.0 * 24.0 * 31.0; //seconds * minutes * hours * days ~ month
NSTimeInterval tempTimestamp = oldTimestamp;
while(tempTimestamp - newTimestamp) > month){
    //more than a month difference -> add a month
    NSString* tempMonthName = [dateFormatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:tempTimestamp]];
    if(![monthName isEqualTo:newMonthName]){
        //do whatever you need with the additional month name...
    }
    tempTimestamp += month;
}

それが役立つことを願っています。

乾杯...

于 2012-10-15T12:38:55.070 に答える