gpt4 book ai didi

objective-c - 两个 NSDate 的问题

转载 作者:行者123 更新时间:2023-12-02 06:42:00 24 4
gpt4 key购买 nike

这段代码有问题:

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

控制台的结果是

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

我也试过“isEqualToDate”但是代码没有进入“if”

最佳答案

我知道您正在尝试确定给定的 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]) {
...
}

isEqualToDate: 方法不会做这个工作,因为它会检查给定日期是否与接收者完全相同(具有亚秒级精度)。

== 操作符也不适合这个,因为它比较指向对象的指针,检查指针是否指向相同的内存位置。

关于objective-c - 两个 NSDate 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6308431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com