如何将两次之间的差异转换为小时?

时间:2014-01-28 00:17:57

标签: ios objective-c nsdate

我找到了答案,但不幸的是它使用的是Java。我有两次,格式为HHmm(没有冒号)。我需要弄清楚有多少15分钟的时间段。例如,我的开始时间为1000,结束时间为1130(军事时间)。

当我减去两个日期时,我得到130,这对计算没有意义。

是否有现成的方法可以帮我这么做? (我花了最后6个小时尝试SO和谷歌,但没有找到任何东西)。

更新:如果对我投降的人请反转,我将不胜感激。问题是非常相关,其他人会发现它很有用。谢谢。

4 个答案:

答案 0 :(得分:3)

每次解析并转换为分钟。因此1000变为10小时0分钟,总共600分钟。 1130变为11小时30分钟,共计690分钟。减去两个值,差值为90分钟。现在除以15得到6。

以下假设所有时间都是4位军事时间:

NSString *startTime = @"1000";
NSString *endTime = @"1130";
int startMinues = [[startTime substringToIndex:2] intValue] * 60 + [[startTime substringFromIndex:2] intValue];
int endMinues = [[endTime substringToIndex:2] intValue] * 60 + [[endTime substringFromIndex:2] intValue];
int minutes = endMinutes - startMinutes;
int units = minutes / 15;

这给你15分钟的整个单位。

答案 1 :(得分:2)

使用 - [NSCalendar组件:fromDate:toDate:options],如下所示:

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalenderUnitMinute fromDate:startDate toDate:endDate options:0];
NSInteger numberOfMinutes = [components minute];

一旦你有了分钟数,它应该只需要除以15得到15分钟的数量。

答案 2 :(得分:0)

尝试使用NSDateComponents:

NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *components = [calendar components:NSMinuteCalendarUnit|NSHourCalendarUnit
                                       fromDate:dateA
                                         toDate:dateB
                                        options:0];
int increments = components.hour*4 + components.minute/15;

答案 3 :(得分:0)

格式很简单:

int HHmm = [date intValue];
int HH = HHmm / 100;
int mm = HHmm % 100;

Diff,对于两个解析日期:

int diff = ((HH2 * 60 + mm2) - (HH1 * 60 + mm1)) / 15;