次の日付形式を使用します。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"];
iOS 6 では年は 2013 になりますが、iOS 7 では 0013 になります。これに対する解決策はありますか、それとも何か間違っていますか?
次の日付形式を使用します。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"];
iOS 6 では年は 2013 になりますが、iOS 7 では 0013 になります。これに対する解決策はありますか、それとも何か間違っていますか?
わかった。間違いは、日付オブジェクト自体にあります。最初に保存するとき、日付形式を「MM/dd/yy hh:mm:ss」として取得し、NSDate に変換して保存します。取得するとNSDateを取得しますが、印刷すると年が0013として印刷されます。その場合、プレフィックスが適切に識別されません。13 はすべての世紀に来るため、4 桁すべてがないと年を保存しても意味がないため、理想的にはこれが正しいはずです。
日付文字列が期待どおりではない可能性があります。日付フォーマッタが 4 桁の年を想定している場合は、それを指定する必要があります。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"];
NSDate *date = [NSDate date];
NSLog(@"stringFromDate: %@", [dateFormatter stringFromDate:date]);
NSString *dateString = @"11/06/13 10:36:11";
date = [dateFormatter dateFromString:dateString];
NSLog(@"dateFromString: %@", date); // year = 0013
dateString = @"11/06/2013 10:36:11";
date = [dateFormatter dateFromString:dateString];
NSLog(@"dateFromString: %@", date); // year = 2013
おそらく、あなたはすべきです
dateFormatter.calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
と
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];