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