我的课程需要两个属性:startTime
和endTime
。什么是最好的课程?我知道有NSDate,但我只需要存储一个特定的时间(在00:00-23:59之间),我不需要约会。这里最优雅的解决方案是什么?
答案 0 :(得分:3)
NSTimeInterval可能已经足够了。
它以秒为单位存储时间值。
EG。 5分钟= 300.0
答案 1 :(得分:1)
我认为最优雅的解决方案,以及您想要的是NSTimeInterval
,这是NSDate
建立在最顶层的原始类型。
NSTimeInterval
是double
的typedef,是以秒为单位的时间度量。该原始时间类型没有任何参考日期的概念。 NSDate
做的是添加这个参考日期的概念,并在格林尼治标准时间2001年1月1日锚定0.0时间。没有什么可以阻止你发明你自己的参考日期或锚,例如“无论什么日子的午夜”。
您可以做的是将NSTimeInterval
的两个属性添加为startTime
和endTime
,并让他们都使用午夜作为参考。或者您可以跳过endTime
并转到startTime
和duration
组合。
答案 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;