NSDateFromatter没有给出正确的MMMM值

时间:2010-12-04 00:07:43

标签: iphone nsdateformatter ios-4.2

这让我疯狂,有人请告诉我在哪里搞砸了。

我已经创建了一个新项目来测试它。环境是xcode 3.2.5在模拟器中运行并且在设备上具有相同的结果。

当我创建日期格式化程序并设置其格式然后传入一个字符串时,某些东西在日期格式化程序上无效。

int tmpMonth = 11;
int tmpYear = 2010;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];    
[dateFormatter setDateFormat:@"m/d/yyyy"];
NSString *dateAsString = [[NSString alloc] initWithFormat:@"%d/23/%d",tmpMonth,tmpYear];
NSDate *theDate = [[NSDate alloc] initWithTimeInterval:0 sinceDate:[dateFormatter dateFromString:dateAsString]];
[dateFormatter setDateFormat:@"MMMM d, yyyy"];
NSLog(@"%@",[dateFormatter stringFromDate:theDate]);
[dateFormatter setDateFormat:@"m/d/yyyy"];
NSLog(@"%@",[dateFormatter stringFromDate:theDate]);
[dateFormatter release];
[theDate release];
[dateAsString release];

这导致此输出:

[Session started at 2010-12-03 17:47:04 -0600.]
2010-12-03 17:47:05.274 wtfDateFormatter[18970:207] January 23, 2010
2010-12-03 17:47:05.277 wtfDateFormatter[18970:207] 11/23/2010

我不确定为什么它会在1月份打印时给我MMMM格式,因为这在我的应用程序的其他部分工作正常,它只使用不同的NSDate源。

2 个答案:

答案 0 :(得分:3)

您使用'm'作为月号,用于解释和生成字符串。不幸的是,'m'是几分钟。请改用“M”。

答案 1 :(得分:1)

如果将tmpMonth设置为12,那么输出是什么?我想知道它会留在1月份还是转到2月份?

相关问题