Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 为什么可可是';s[NSDate distantPast]不等于从字符串初始化的同一日期?_Cocoa_Date - Fatal编程技术网

Cocoa 为什么可可是';s[NSDate distantPast]不等于从字符串初始化的同一日期?

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”实际上返

如果此代码在空Cocoa应用程序中执行:

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允许更好地控制解析