0

可能重复:
从时间戳间隔中获取缺少的月份

我从服务器接收以秒为单位的时间。然后我使用下面的代码将它们转换为月份。

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

问题是我不是每个月都从服务器获取,就像我第一次获取 Jan 然后第二次获取 Apr 从服务器获取但我需要在我的 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];

这会将您的日期增加/减少一个月。

于 2012-10-15T12:20:00.203 回答