NSDateFormatterで日にちが一週間ずれる


NSDateFormatter *fmt = [NSDateFormatter new];
[fmt setDateFormat:@"YYYY-01-01 00:00:00 0000"];
[fmt setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSString *dateStr = [fmt stringFromDate:[NSDate date]];
NSDate *minDate = [fmt dateFromString:dateStr];

とした際にminDatが一週間ずれることがあった。

解決策

YYYY を yyyyに変更
Y(大文字)はその週の年、つまり1月1日が週の後半(厳密には木曜日以降)だったら、その週は前年の週と見なされる。