10
请参阅下面的代码和输出。NSDateFormatter + dateFormatFromTemplate:options:locale:BUG?
NSDateComponents *dateComponents = [[[NSDateComponents alloc] init] autorelease];
[dateComponents setYear:2011];
[dateComponents setMonth:1];
[dateComponents setDay:1];
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:dateComponents];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:[NSDateFormatter dateFormatFromTemplate:@"YYYYMMMd" options:0 locale:[NSLocale currentLocale]]];
NSString *dateString = [dateFormatter stringFromDate:date];
NSLog(@"Happy New Year: %@", dateString);
您对输出的期望是什么?
Happy New Year: Jan 1, 2011
但结果是...
Happy New Year: Jan 1, 2010
有什么不对?请帮助...
+1具体来说,Y是本周的年份。 2011年1月1日这一周属于2010年,所以YYYY生产2010年。 – ughoavgfhw 2010-12-17 04:58:39
非常感谢〜 – alforo 2010-12-17 06:26:17
@ughoavgfhw:谢谢。我应该指出答案的不同之处,因为它可能会让人困惑,因为“Y”似乎在大多数情况下“工作”。大写字母“Y”表示包含日期的那一周开始于哪一周。因此,如果1月1日是星期四,则“Y”将给出该周的开始*年(即星期一)。在1月7日或以后,“Y”会得到与“Y”相同的结果,但当然最好先使用正确的格式化信函。 – Anna 2010-12-17 13:31:45