0

次の日付形式を使用します。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"];

iOS 6 では年は 2013 になりますが、iOS 7 では 0013 になります。これに対する解決策はありますか、それとも何か間違っていますか?

4

3 に答える 3

1

わかった。間違いは、日付オブジェクト自体にあります。最初に保存するとき、日付形式を「MM/dd/yy hh:mm:ss」として取得し、NSDate に変換して保存します。取得するとNSDateを取得しますが、印刷すると年が0013として印刷されます。その場合、プレフィックスが適切に識別されません。13 はすべての世紀に来るため、4 桁すべてがないと年を保存しても意味がないため、理想的にはこれが正しいはずです。

于 2013-11-06T17:54:01.477 に答える
0

日付文字列が期待どおりではない可能性があります。日付フォーマッタが 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
于 2013-11-06T17:40:39.970 に答える
0

おそらく、あなたはすべきです

dateFormatter.calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
于 2014-02-10T11:47:57.707 に答える