DateFormatter не выводит неправильную дату - PullRequest
0 голосов
/ 02 марта 2012

Я пытаюсь сделать дату из строки, однако она всегда делает дату в январе месяце ... Почему?

Код:

NSMutableArray *dateArray = [NSMutableArray array];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"YYYYMMDD"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

for (id <NSFetchedResultsSectionInfo> sectionInfo in [fetchedResultsController sections]) {
    NSLog(@"Adding date: %@", [sectionInfo name]);
    NSDate *newDate = [dateFormatter dateFromString:[sectionInfo name]];
    NSLog(@"Adding date 2: %@", newDate);
    [dateArray addObject:newDate];
}

LOGS:

2012-03-01 15:14:48.124 MyApp[21793:fb03] Adding date: 20120827
2012-03-01 15:14:48.124 MyApp[21793:fb03] Adding date 2: 2012-01-27 00:00:00 +0000
2012-03-01 15:14:48.125 MyApp[21793:fb03] Adding date: 20120830
2012-03-01 15:14:48.125 MyApp[21793:fb03] Adding date 2: 2012-01-30 00:00:00 +0000
2012-03-01 15:14:48.125 MyApp[21793:fb03] Adding date: 20120831
2012-03-01 15:14:48.126 MyApp[21793:fb03] Adding date 2: 2012-01-31 00:00:00 +0000
2012-03-01 15:14:48.126 MyApp[21793:fb03] Adding date: 20120906
2012-03-01 15:14:48.127 MyApp[21793:fb03] Adding date 2: 2012-01-06 00:00:00 +0000
2012-03-01 15:14:48.127 MyApp[21793:fb03] Adding date: 20120907
2012-03-01 15:14:48.128 MyApp[21793:fb03] Adding date 2: 2012-01-07 00:00:00 +0000
2012-03-01 15:14:48.128 MyApp[21793:fb03] Adding date: 20120910
2012-03-01 15:14:48.128 MyApp[21793:fb03] Adding date 2: 2012-01-10 00:00:00 +0000
2012-03-01 15:14:48.129 MyApp[21793:fb03] Adding date: 20120913
2012-03-01 15:14:48.129 MyApp[21793:fb03] Adding date 2: 2012-01-13 00:00:00 +0000

1 Ответ

3 голосов
/ 02 марта 2012

Спецификатор дня месяца - dd, а не DD. Кроме того, вы можете использовать формат yyyy для лет, так как YYYY означает «Неделя года» в ISO и может отличаться от фактического года. Итак, ваш окончательный формат должен выглядеть так:

[dateFormatter setDateFormat:@"yyyyMMdd"];
...