1

このコードが空のCocoaアプリで実行された場合:

NSLog([[NSDate distantPast] isEqualToDate:[NSDate dateWithString:[[NSDate distantPast] description]]] ? @"YES" : @"NO");

NO結果として得られます。

NSDateがどのくらいの期間存在していたかを考えると、バグになるとは思わないでしょうが、[NSDate dateWithString:@"0001-01-01 00:00:00 +0000"]実際にはを返すため、少し奇妙に見えます0001-01-03 00:00:00 +0000

どうしたの?

4

1 に答える 1

2

原因は-[NSDatedateWithString:]です。また、10.7で非推奨になりました。

@interface NSDate (NSCalendarDateExtras)
/*    DEPRECATED DEPRECATED DEPRECATED
 *    These methods are deprecated.
 *    Use NSCalendar for calendrical calculations.
 *    Use NSDateFormatter for date<->string conversions.
 */
...
+ (id)dateWithString:(NSString *)aString;
...
@end

この方法は常に問題があり、日付の解析には推奨されていません。NSDateFormatterを使用すると、解析をより適切に制御できます。

于 2012-06-21T03:35:18.473 に答える