Сравнение времени в Какао - PullRequest
1 голос
/ 30 июня 2011

Я храню дату и время в строках, используя NSUserDefaults, когда выполняется действие.В следующий раз, когда приложение будет запущено, я хочу проверить время с последней даты и время и отобразить сообщение, если оно больше указанного периода времени.

Возможно ли это?

В viewDidLoad я получаю NSUserDefaults с сохраненной датой и временем и получаю текущую дату, но как мне их сравнить и «сделать что-то», если разница во времени больше указанной?

Ответы [ 2 ]

1 голос
/ 30 июня 2011

Использование NSDate * s timeIntervalSinceDate: метод.

Кстати, вы можете хранить NSDates непосредственно в NSUserDefaults.Вам не нужно конвертировать их в / из строк.

0 голосов
/ 30 июня 2011

Вы можете сделать что-то подобное:

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