开发者

Time comparison in Cocoa

开发者 https://www.devze.com 2023-03-16 04:51 出处:网络
I am storing the date and time in strings using NSUserDefaults when an action is performed. next time the app is run, I want to check the time since the last date and time, and display a message if th

I am storing the date and time in strings using NSUserDefaults when an action is performed. next time the app is run, I want to check the time since the last date and time, and display a message if this is greater than a specified time period.

Is this possible?

In viewDidLoad I retrieve the NSUserDefaults with the saved date and time, and I get the current date, but how do i compare them, and 'do something' if the time difference is b开发者_如何学Pythonigger than specified?


Use NSDate's timeIntervalSinceDate: method.

By the way, you can store NSDates directly in NSUserDefaults. You don't need to convert them to/from strings.


You could do something like that:

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 :)       
}
0

精彩评论

暂无评论...
验证码 换一张
取 消