执行操作时,我使用NSUserDefaults将日期和时间存储在字符串中。下次运行应用程序时,我想检查自上次日期和时间以来的时间,如果大于指定的时间段,则显示一条消息。
这可能吗?
在viewDidLoad
中,我使用保存的日期和时间检索NSUserDefaults,并获得当前日期,但如何比较它们,如果时间差大于指定值,则“做某事”?
答案 0 :(得分:1)
使用NSDate的timeIntervalSinceDate:方法。
顺便说一句,您可以将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 :)
}