如何从NSDate对象的字符串中获取时间?

akv*_*akv 5 iphone format cocoa datetime

基本上,我从API获取日期时间字符串,我想在应用程序中显示此活动发生在"5小时前"或"3天前",依此类推......

我目前正在尝试从[NSDate timeIntervalSinceNow]方法中获取NSTimeInterval .然后再使用将时间间隔转换为NSDate [NSDate dateWithTimeIntervalSince1970:interval].然后检查间隔,看它是否小于60/3600/86400 /等,为输出NSDateFormatter对象设置正确的格式.

这是正确的方法吗?或者有更简单/更好的方法吗?

Chu*_*uck 7

为此使用NSCalendar要好得多.它专为此类转换而设计.

NSUInteger desiredComponents = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSHourCalendarUnit | NSDayCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *elapsedTimeUnits = [[NSCalendar currentCalendar] components:desiredComponents 
                                                                   fromDate:activityDate 
                                                                   toDate:[NSDate date] 
                                                                   options:0];
Run Code Online (Sandbox Code Playgroud)