如何在plist中保存持续时间,以便我可以在Core Data中加载一些示例数据?
持续时间我的意思是任务有一个持续时间。可能是1小时12分钟。可能是15米。
使用此类别
+(NSDate *)dateWithHour:(NSInteger)hour minute:(NSInteger)minute
{
NSDateComponents *components = [[NSDateComponents alloc]init];
components.hour = hour;
components.minute = minute;
NSCalendar *calender = [NSCalendar currentCalendar];
NSDate *date = [calender dateFromComponents:components];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"HH:mm"];
NSLog(@"**Date Utils** %@",[dateFormatter stringFromDate:date]);
return date;
}
我可以创建15分钟的持续时间
task.duration = [NSDate dateWithHour:0 minute:15];
它以:
输出到控制台0001-01-01 04:29:24 +0000
这似乎不是15分钟。它看起来像4h29m24s。如果我通过dateFormatter运行日期肯定会打印出15米。 如何在plist中输入持续时间,如下所示?
我错过了什么?
答案 0 :(得分:2)
由于时区和闰年和闰秒等原因,日期非常复杂。它们不适合这种用例,你会遇到各种各样的错误。
持续时间的正确数据类型是NSTimeInterval,它是一个64位浮点数,以秒为单位。 NSDate也在内部使用此数据类型。
创建时间间隔的最简单方法是:
NSDate *aDate = ...
NSDate *anotherDate = ...
NSTimeInterval duration = [aDate timeIntervalSinceDate:anotherDate];
你要把它保存到NSNumber的一个plist:
NSNumber *durationNumber = [NSNumber numberWithDouble:duration];
请注意,NSTimeInterval实际上是双倍的。