2010-07-01 81 views
1

即时试图增加一个日期,并得到每月的格式化输出... 它工作正常,但2010年12月至2011年1月的步骤不起作用。 请看看这个:NSDateFormatter问题增加日期

NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; 
NSDate *lastDate = [[NSDate alloc] init]; 

for (int i = 0; i < 12; i++) { 
    NSDateComponents *offsetComponents = [[[NSDateComponents alloc] init] autorelease]; 
    [offsetComponents setMonth: 1]; 
    lastDate = [[gregorian dateByAddingComponents:offsetComponents toDate: lastDate options:0] retain]; 


    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
    [dateFormatter setDateFormat:@"MMMM YYYY"]; 

    NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]; 
    [dateFormatter setLocale:locale]; 

    NSLog(@"%d: Fromatted Date: %@ from : %@", i, [dateFormatter stringFromDate:lastDate], lastDate); 
} 

调试输出: [会话开始于2010-07-01 11时05分18秒+0200] 0:Fromatted日期:2010年8月来自:2010-08 -01 11时05分19秒+0200

1:Fromatted日期:2010年9月从:2010-09-01 11点05分19秒+0200

2:Fromatted日期:2010年10月来自:2010-10 -01 11:05:19 +0200

3:Fromatted日期:2010年11月从: 2010-11-01 11:05:19 +0100 4:Fromatted日期:2010年12月从:2010-12-01 11:05:19 +0100

5:Fromatted日期:2010年1月从:2011-01 -01 11:05:19 +0100 < ---为什么是2010年?

6:Fromatted日期:2011年2月从:2011-02-01 11点05分19秒+0100

7:Fromatted日期:2011年3月从:2011-03-01 11点05分19秒+0100

8:Fromatted日期:2011年4月从:2011-04-01 11点05分19秒+0200

9:Fromatted日期:2011年5月从:2011-05-01 11点05分19秒+0200

10:Fromatted日期:2011年6月从:2011-06-01 11:05:19 +0200

11:Fromatted日期:2011年7月from:2011-07-01 11:05:19 +0200

回答

3

hmm :-( 真的很奇怪。我只是做了一个新的基于视图的应用程序... 水湿找到了一丝

**更新:好吧,如果我使用[dateFormatter setDateFormat:@“MMMM YYYY”] (所以只是小写Y)的加工。

Y/YYYY:(全年)

YY/YYY:(2位数年)

Y/YYYY:(全年来看,从去年的第一个星期的星期日开始)

YY/YYY:(2位数年份,从一年的第一周的星期日开始)

+0

这绝对是答案。用yyyy替换YYYY - 现在一切正常。 – HiveHicks 2010-12-16 10:08:16

+0

谢谢;这也解决了我的问题! :-) – 2011-01-06 05:37:15

1

我也没有遇到任何问题,您正在谈论。 我也复制你的代码,工作正常。

我不知道,但我认为必须有SDK版本的问题。因为我们使用3.1.3并且工作正常。只是尝试在不同的SDK版本。

Cheers Mitul