Cocoa 为什么可可是';s[NSDate distantPast]不等于从字符串初始化的同一日期?
如果此代码在空Cocoa应用程序中执行:Cocoa 为什么可可是';s[NSDate distantPast]不等于从字符串初始化的同一日期?,cocoa,date,Cocoa,Date,如果此代码在空Cocoa应用程序中执行: NSLog([[NSDate distantPast] isEqualToDate:[NSDate dateWithString:[[NSDate distantPast] description]]] ? @"YES" : @"NO"); 我得到的结果是NO 考虑到NSDate已经存在了多长时间,我不认为它是一个bug,但它看起来有点奇怪,因为[NSDate dateWithString:@“0001-01-01 00:00:00+0000”实际上返
NSLog([[NSDate distantPast] isEqualToDate:[NSDate dateWithString:[[NSDate distantPast] description]]] ? @"YES" : @"NO");
我得到的结果是NO
考虑到NSDate已经存在了多长时间,我不认为它是一个bug,但它看起来有点奇怪,因为[NSDate dateWithString:@“0001-01-01 00:00:00+0000”
实际上返回0001-01-03 00:00:00+0000
发生了什么事?罪魁祸首是-[NSDate dateWithString:]。从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
@接口NSDate(NSCalendarDateExtras)
/*已弃用已弃用已弃用已弃用
*这些方法已被弃用。
*使用NSCalendar进行日历计算。
*使用NSDateFormatter进行日期字符串转换。
*/
...
+(id)dateWithString:(NSString*)aString;
...
@结束
此方法一直存在问题,从未建议用于日期解析。NSDateFormatter允许更好地控制解析