9

我已经设置了语言环境和时区,但是当我格式化日期时,我总是得到无效的日期。月份始终为 12 月,年份比指定年份小一。就我而言,我不需要白天组件。

我检查了其他类似的帖子,但没有解决问题。

任何帮助表示赞赏。谢谢你。

这是代码:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]; 
dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
[dateFormatter setDateFormat:@"MMM YYYY"];
NSDate *formattedDate = [dateFormatter dateFromString:@"Sep 2013"];
NSLog(@"Date: %@", [dateFormatter stringFromDate:formattedDate]);
[dateFormatter release]; dateFormatter = nil;

输出:日期:2012 年 12 月

4

2 回答 2

16

“YYYY”格式用于基于“一年中的一周”的日历。改用“yyyy”格式说明符:

[dateFormatter setDateFormat:@"MMM yyyy"];
于 2012-04-10T06:58:46.187 回答
0

我只是想为弗拉基米尔的出色回答添加一些内容。如果您在设置语言环境之前执行此操作,日期格式似乎会变得疯狂。我必须做的是在设置新格式之前设置语言环境,然后使用setDateFormat来根据使用的语言环境更改格式。所以这样的事情会做:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];//I wanted to set the locale to wherever user is using my app in
[formatter setDateFormat:@"MMM YYYY"];
NSDate *now = [NSDate Date];
NSString *fancyLookingDate = [formatter stringFromDate:now];
于 2015-11-04T23:47:49.240 回答