Как получить время с момента строки из объекта NSDate? - PullRequest
5 голосов
/ 09 января 2010

По сути, я получаю строку даты и времени от API и хочу показать в приложении, что это действие произошло «5 часов назад» или «3 дня назад» и т. Д. *

В настоящее время я пытаюсь получить NSTimeInterval из метода [NSDate timeIntervalSinceNow]. А затем снова преобразовать временной интервал в NSDate, используя [NSDate dateWithTimeIntervalSince1970:interval]. И затем проверка интервала, чтобы увидеть, меньше ли он 60/3600/86400 / и т. Д., Чтобы установить правильный формат для выходного объекта NSDateFormatter.

Это правильный способ сделать это? Или есть более простой / лучший способ сделать это?

Ответы [ 2 ]

7 голосов
/ 09 января 2010

Гораздо лучше использовать для этого NSCalendar . Он предназначен для такого рода конверсий.

NSUInteger desiredComponents = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSHourCalendarUnit | NSDayCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *elapsedTimeUnits = [[NSCalendar currentCalendar] components:desiredComponents 
                                                                   fromDate:activityDate 
                                                                   toDate:[NSDate date] 
                                                                   options:0];
4 голосов
/ 12 июля 2012

Проверить этот проект: https://github.com/kevinlawler/NSDate-TimeAgo

Это категория для NSDate, которая делает это.

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