我已经设置了区域设置和时区,但是当我格式化日期时,我总是得到无效的日期。月份总是十二月,一年比指定年份少一个月。在我的情况下,我不需要日期组件。
我检查了其他类似的帖子,但它没有解决问题。
感谢任何帮助。谢谢。
以下是代码:
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月
答案 0 :(得分:16)
“YYYY”格式用于基于“年度周”的日历。改为使用“yyyy”格式说明符:
[dateFormatter setDateFormat:@"MMM yyyy"];
答案 1 :(得分: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];