timeIntervalSinceDate возвращает 0 - PullRequest
0 голосов
/ 23 ноября 2011

Я пытаюсь узнать, находится ли дата между другими 2. Хитрость заключается в том, что эти даты просто формируются из дня недели и времени. Чтобы сделать это и пропустить предыдущие проблемы, я взял самые первые будни, это январь 1970 года. Итак, я беру текущий день недели и делаю его с 1970 года, например так: NSDate * dateNow = [NSDate date];

    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en"] autorelease]];
    [dateFormatter setDateFormat:@"EEEE HH:mm"];    

    NSString *dateString = [dateFormatter stringFromDate:dateNow];

    NSLog(@"La fecha es: %@", dateString);

    NSDate *dateComp =  [dateFormatter dateFromString:dateString];//Date and time in 1970

Я сравниваю эту дату с фиксированными датами (день недели и время) и смотрю, что она в любом интервале, например:

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en"] autorelease]];
[dateFormatter setDateFormat:@"EEEE HH:mm dd-MM-y"];    
NSString *dateString = [dateFormatter stringFromDate:self.fechaInicio];

NSLog(@"La date start es: %@", dateString);

dateString = [dateFormatter stringFromDate:self.fechaFin];

NSLog(@"La Date end es: %@", dateString);
dateString = [dateFormatter stringFromDate:testDate];

NSLog(@"DAte inside es: %@", dateString);

NSLog(@"time interval nicio: %d", [testDate timeIntervalSinceDate:self.fechaInicio]);
NSLog(@"time interval fin: %d", [testDate timeIntervalSinceDate:self.fechaFin]);

но это вывод

Palyque[746:307] La date start es: Monday 09:00 05-01-1970
2011-11-23 11:34:47.857 Palyque[746:307] La Date end es: Monday 16:00 05-01-1970
2011-11-23 11:34:47.861 Palyque[746:307] DAte inside es: Wednesday 11:34 07-01-1970
2011-11-23 11:34:47.864 Palyque[746:307] time interval nicio: 0 
2011-11-23 11:34:47.867 Palyque[746:307] time interval fin: 0

Есть идеи? Почему всегда 0? Я печатаю даты, прежде чем вычислить timeIntervalSinceDate, и все выглядит хорошо ...

1 Ответ

2 голосов
/ 23 ноября 2011

NSTimeInterval - число с плавающей запятой. Для регистрации этих значений необходимо использовать спецификатор формата %f.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...