可可的时间比较

时间:2011-06-30 09:10:36

标签: cocoa nsdate

执行操作时,我使用NSUserDefaults将日期和时间存储在字符串中。下次运行应用程序时,我想检查自上次日期和时间以来的时间,如果大于指定的时间段,则显示一条消息。

这可能吗?

viewDidLoad中,我使用保存的日期和时间检索NSUserDefaults,并获得当前日期,但如何比较它们,如果时间差大于指定值,则“做某事”?

2 个答案:

答案 0 :(得分:1)

使用NSDatetimeIntervalSinceDate:方法。

顺便说一句,您可以将NSDate直接存储在NSUserDefaults中。您无需将它们转换为字符串。

答案 1 :(得分:0)

你可以这样做:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDate * lastUpdate = [defaults valueForKey:@"mysettingdate"];

if(!lastUpdate){
    lastUpdate = [NSDate dateWithTimeIntervalSince1970:0];
}

NSDate *localDate = [NSDate date];
NSTimeInterval timeZoneOffset = [[NSTimeZone defaultTimeZone] secondsFromGMT]; 
NSTimeInterval gmtTimeInterval = [localDate timeIntervalSinceReferenceDate] + timeZoneOffset;
NSDate *gmtDate = [NSDate dateWithTimeIntervalSinceReferenceDate:gmtTimeInterval];

NSDateComponents *diff = [[NSCalendar currentCalendar] components:NSMinuteCalendarUnit fromDate:lastUpdate toDate:gmtDate options:0];

NSLog(@"diff in minutes:%d", [diff minute]); //or hour, days, seconds
if ([diff minute]>0)  {
    //do your stuff :)       
}