将 NSDateComponents 与整数进行比较(或将 NSDateComponents 转换为整数)

Posted

技术标签:

【中文标题】将 NSDateComponents 与整数进行比较(或将 NSDateComponents 转换为整数)【英文标题】:Compare NSDateComponents to integer (or convert NSDateComponents to integer) 【发布时间】:2016-04-30 20:54:31 【问题描述】:

我正在尝试检查从应用安装到解锁某些功能是否经过 X 天

NSDate *now = [NSDate date];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [gregorianCalendar components:NSCalendarUnitDay
                                                    fromDate:[[NSUserDefaults standardUserDefaults]
                                                              objectForKey:@"firstTimeDate"]
                                                      toDate:now
                                                     options:0];

但是当我这样做时

if (!(components < 1)) 
 ...

我明白了

指针和整数之间的有序比较('NSDateComponents *'和'int')

【问题讨论】:

【参考方案1】:

由于您要询问天数,因此您应该访问 day 属性。

if (components.day >= 1) 

注意:使用x &gt;= y 可能比使用!(x &lt; y) 更清晰。

【讨论】:

不错!天数在 00:00:00 或每 24 小时递增一次? 尝试不同的值,但我相信如果两个日期相隔 24 小时,您将获得 1 天。

以上是关于将 NSDateComponents 与整数进行比较(或将 NSDateComponents 转换为整数)的主要内容,如果未能解决你的问题,请参考以下文章

填充整数列表比填充整数向量快 100 倍

将 NSDateComponents 传递给 UILocalNotification 的最佳实践?

NSDateComponents:如何将已弃用的 NSWeekCalendarUnit 替换为计算周开始日期?

Swift:无法将“NSDate”类型的值转换为预期的参数类型“NSDateComponents”

NSDateComponents

自己主动更新 -- 版本比較