存储“时间”值的最佳方式

时间:2010-11-15 14:21:07

标签: iphone objective-c cocoa-touch nsdate

我的课程需要两个属性:startTimeendTime。什么是最好的课程?我知道有NSDate,但我只需要存储一个特定的时间(在00:00-23:59之间),我不需要约会。这里最优雅的解决方案是什么?

4 个答案:

答案 0 :(得分:3)

NSTimeInterval可能已经足够了。

它以秒为单位存储时间值。

EG。 5分钟= 300.0

答案 1 :(得分:1)

我认为最优雅的解决方案,以及您想要的是NSTimeInterval,这是NSDate建立在最顶层的原始类型。

NSTimeIntervaldouble的typedef,是以秒为单位的时间度量。该原始时间类型没有任何参考日期的概念。 NSDate做的是添加这个参考日期的概念,并在格林尼治标准时间2001年1月1日锚定0.0时间。没有什么可以阻止你发明你自己的参考日期,例如“无论什么日子的午夜”

您可以做的是将NSTimeInterval的两个属性添加为startTimeendTime,并让他们都使用午夜作为参考。或者您可以跳过endTime并转到startTimeduration组合。

答案 2 :(得分:0)

NSDateComponents,“也可用于指定持续时间,例如,5小时16分钟。”

答案 3 :(得分:0)

NSDate类类似于C#中的DateTime类:两者都保存日期和时间,但它们可以相互独立。在Cocoa中,您将比较两个NSDate类:

//Create NSDate objects in the time format
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm:ss"];
NSString *startTimeString = @"00:00:00"; //0 seconds
NSString *endTimeString = @"00:00:52"; //52 seconds
NSDate *startTime = [dateFormatter dateFromString:startTimeString];
NSDate *endTime = [dateFormatter dateFromString:endTimeString];

//Compare the time
BOOL date1before2 = [startTime compare:endTime] == NSOrderedAscending;