iPhone - Сравнение в два раза - PullRequest
       15

iPhone - Сравнение в два раза

0 голосов
/ 29 ноября 2009

У меня есть два значения времени в формате ЧЧ: мм, которые мне нужно сравнить, и вывести, на сколько минут они отличаются. Например, сравнение 18:30 и 19:45 должно вернуть 1:15. Я перечитал NSDate, NSCalendar и т. Д., Но меня смущает то, как они все работают вместе и как я могу создать NSDate только с указанием времени, а не всей даты.

1 Ответ

3 голосов
/ 29 ноября 2009

Вы можете использовать NSDateFormatter для создания объектов NSDate с заданными строками в формате «ЧЧ: мм», а затем использовать - [NSDate timeIntervalSinceDate:], чтобы найти количество секунд между двумя значениями времени. NSDate инкапсулирует полную дату - вы не можете иметь, чтобы она представляла только время - поэтому созданные объекты NSDate будут иметь время на определенную дату (контрольная дата, 1 января 1970 года, из моего тестирования) в местный часовой пояс. Вам нужно будет решить для себя, нужно ли вам более надежное решение, соответствующее вашим потребностям, поскольку ваши потребности неясны.

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm"];
NSDate *time1 = [formatter dateFromString:@"18:30"];
NSDate *time2 = [formatter dateFromString:@"19:45"];
[formatter release];

NSTimeInterval deltaTime = fabs([time1 timeIntervalSinceDate:time2]);
NSString *result = [NSString stringWithFormat:@"%d:%d", (int)(deltaTime/3600), (int)(deltaTime/60)%60];

Если fabs() обернуть туда timeIntervalSinceDate:, вы не получите отрицательного времени на основании порядка получателя и аргумента для timeIntervalSinceDate:. Вы можете настроить это при необходимости.

Примечание: приведенное выше, вероятно, не самый лучший и не самый эффективный способ определения результата, но я просто стремился проиллюстрировать концепцию, а не оптимизировать без необходимости.

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