10
以下のコードを参照してください。NSDateFormatter + dateFormatFromTemplate:オプション:ロケール: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
ありがとうございます〜 – alforo
@ughoavgfhw:ありがとうございます。私は答えの違いを指摘しておきました。なぜなら、 "Y"はほとんどの時間 "働く"ようであるので、混乱する可能性があるからです。大文字の "Y"は、あなたの日付が入っている週が何年始まるかを示します。Jan 1が木曜日にある場合、 "Y"はその週の*開始*の年を返します。 1月7日以降、「Y」は「y」と同じ結果を返しますが、最初は適切な書式設定文字を使用する方が良いでしょう。 – Anna