需要使用NSDate进行时间比较的建议

时间:2010-06-02 02:40:32

标签: iphone comparison nsdate

我正在开发闹钟。 我想比较现在的时间和setTime。是否可以在几分钟内进行比较。

我的问题是NSDate将在几秒内进行比较,例如9:38:50不等于9:38:00。 我怎样才能在几分钟内进行比较?

2 个答案:

答案 0 :(得分:5)

首先,将它们转换为UNIX时间戳,忽略毫秒。

NSUInteger time1 = (NSUInteger)[date1 timeIntervalSince1970];
NSUInteger time2 = (NSUInteger)[date2 timeIntervalSince1970];

忽略秒。

time1 = time1 - (time1 % 60);
time2 = time2 - (time2 % 60);

现在,您可以安全地比较它们。

if (time1 == time2) {
  NSLog(@"Bingo");
}

答案 1 :(得分:2)

使用NSCalendar获取您感兴趣的NSDateComponents。然后可以轻松比较这些内容。

虽然检查当前日期是否晚于警报日期可能就足够了。如果是,并且警报没有停止,即使计算机暂时失去电源或其他东西,您也应该离开。