两个NSDate的问题

Cra*_*Dev 2 io xcode if-statement objective-c nsdate

我有这个代码的问题:

NSDate *today = [[NSDate alloc] init];
if (dateOne == today) {
dataLabel.textColor = [UIColor redColor]; NSLog(@"inside if");}
NSLog(@"today:%@", oggi);
NSLog(@"dateOne:%@", dateOne);
Run Code Online (Sandbox Code Playgroud)

控制台的结果是

2011-06-10 17:19:00.170 Project[678:707] today:2011-06-10 15:19:00 +0000
2011-06-10 17:19:00.174 Project[678:707] dateOne:2011-06-10 15:19:00 +0000
Run Code Online (Sandbox Code Playgroud)

我也尝试"isEqualToDate",但代码不进入"if"

alb*_*amg 9

我知道你正试图确定一个给定的NSDate是今天.要做到这一点,您不必在比较中考虑小时,分钟等.这个怎么样:

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:[NSDate date]];
NSDate *today = [calendar dateFromComponents:components];
components = [calendar components:(NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:otherDate];
NSDate *dateOne = [calendar dateFromComponents:components];

if([today isEqualToDate:dateOne]) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

该方法isEqualToDate:不会执行任务,因为它检查给定日期是否与接收器完全相等(具有亚秒精度).

==操作者不适合此可能是因为它的指针进行比较,以对象,它会检查是否指针指向同一存储器位置.