2

同じ形式の別の NSDateFormatter を使用して、NSDateFormatter によって生成された文字列を解析しようとしています。

前の文を意味のあるものにしようとするのではなく、いくつかのコードを次に示します。

NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMM dd, YYYY HH:mm"];

NSDate *now = [[NSDate alloc] init];

NSString *dateString = [format stringFromDate:now];

NSDateFormatter *inFormat = [[NSDateFormatter alloc] init];
[inFormat setDateFormat:@"MMM dd, YYYY HH:mm"];

NSDate *parsed = [inFormat dateFromString:dateString];

NSLog(@"\n"
      "now:        |%@| \n"
      "dateString: |%@| \n"
      "parsed:     |%@|", now, dateString, parsed);

このコードを実行すると、parsedに現在と同じ日付が含まれると予想されますが、代わりに次の出力が得られます。

現在: |2009-05-04 18:23:35 -0400|
dateString: |2009 年 5 月 4 日 18:23|
解析済み: |2008-12-21 18:23:00 -0500|

なぜこれが起こっているのか、誰にも考えがありますか?

4

1 に答える 1

9

問題は、「YYYY」が有効な ICU 日付形式オプションではないことです。あなたは「yyyy」が欲しいです。

大文字の 'Y' は、"week of year" オプション (つまり、"'Week 'w' of 'Y") と共に使用する場合にのみ有効です。

于 2009-05-04T23:22:50.107 に答える