在Objective-C中两次比较最好/最简单的方法是什么?

And*_*ndy 3 iphone objective-c

我有一个时间的字符串表示,如"11:13 AM".这是使用NSDateFormatter和stringFromDate:方法生成的.

我想将这个时间与当前时间进行比较,但是当我使用dateFromString:方法将字符串转换回日期时,会添加年,月和日 - 这是我不想要的.我只需要知道现在是否</>存储在字符串中的时间.

最好的办法是什么?在此先感谢您的帮助.

pro*_*rmr 9

而不是使用字符串表示,使用从选择器获得的NSDate.您可以使用NSDateComponents转换该小时/分钟/秒,然后将[NSDate date]转换为NSDateComponents.比较两组组件的小时/分钟/秒.

编辑 - 使用实用程序功能,将NSDate的hr/min/sec组件转换为secondsOfTheDay(午夜后的秒数).

您可以直接使用两个时间值,因为它们都是午夜后的秒数.简单的整数可以很容易地进行比较,存储和操作.您不必一直使用NSDate.

//----------------------------------------------------------------------------
// extracts hour/minutes/seconds from NSDate, converts to seconds since midnight
//----------------------------------------------------------------------------
unsigned secondOfTheDay( NSDate* time )
{
    NSCalendar* curCalendar = [NSCalendar currentCalendar];
    const unsigned units    = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
    NSDateComponents* comps = [curCalendar components:units fromDate:time];
    int hour = [comps hour];
    int min  = [comps minute];
    int sec  = [comps second];

    return ((hour * 60) + min) * 60 + sec;
}
Run Code Online (Sandbox Code Playgroud)