我有一个时间的字符串表示形式,例如“11:13 AM”。这是使用 NSDateFormatter 和 stringFromDate: 方法生成的。
我想将此时间与当前时间进行比较,但是当我使用 dateFromString: 方法将字符串转回日期时,会添加年、月和日 - 这是我不想要的。我只需要知道现在是存储在字符串中的时间。
处理这个问题的最佳方法是什么?在此先感谢您的帮助。
不要使用字符串表示形式,而是使用从选择器获取的 NSDate。您可以使用 NSDateComponents 转换该小时/分钟/秒,然后还将 [NSDate date] 转换为 NSDateComponents。比较两组组件的小时/分钟/秒。
EDIT-- 使用一个实用函数来处理类似的事情,将 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)