增加日期的NSDateFormatter问题

时间:2010-07-01 09:18:35

标签: iphone objective-c xcode nsdateformatter

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

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 Date:2010年8月来自:2010-08-01 11:05:19 +0200

1:色彩日期:2010年9月来自:2010-09-01 11:05:19 +0200

2:色彩日期:2010年10月:2010-10-01 11:05:19 +0200

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

5:色彩日期:2010年1月:2011-01-01 11:05:19 +0100&lt; ---为什么是2010年?!

6:色彩日期:2011年2月:2011-02-01 11:05:19 +0100

7:色彩日期:2011年3月:2011-03-01 11:05:19 +0100

8:色彩日期:2011年4月:2011-04-01 11:05:19 +0200

9:色彩日期:2011年5月:2011-05-01 11:05:19 +0200

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

11:Fromaticted Date:2011年7月来自:2011-07-01 11:05:19 +0200

2 个答案:

答案 0 :(得分:3)

嗯:-( 真奇怪。我刚刚编写了一个新的基于视图的应用程序... 找不到提示

** update:ok如果我使用[dateFormatter setDateFormat:@“MMMM yyyy”] (所以只是小写的Y)它的工作。

是/ yyyy :(全年)

yy / yyy :( 2位数年份)

Y / YYYY :(全年,从一年的第一周的星期日开始)

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

答案 1 :(得分:1)

我也没有遇到你所说的任何问题。 我也复制你的代码,工作正常。

我不确定,但我认为必须存在SDK版本的问题。因为我们正在使用3.1.3并且工作正常。试试不同的sdk版本。

干杯Mitul