如何将持续时间保存在plist中,以便可以在Core Data中加载一些样本数据?
持续时间是指任务具有持续时间。可能是1h12m。可能是15m。
使用这个类别
+(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追溯日期,那么它肯定会打印出15m。如何在plist中输入持续时间,如下所示?
我想念什么?
由于时区,leap年和leap秒等原因,日期非常复杂。它们不适合这种用例,您将遇到各种错误,试图使用它们。
持续时间的正确数据类型是NSTimeInterval,它是一个64位浮点数,以秒为单位。NSDate也在内部使用此数据类型。
创建时间间隔的最简单方法是:
NSDate *aDate = ...
NSDate *anotherDate = ...
NSTimeInterval duration = [aDate timeIntervalSinceDate:anotherDate];
然后将其保存到带有NSNumber的plist中:
NSNumber *durationNumber = [NSNumber numberWithDouble:duration];
请注意,NSTimeInterval实际上是双精度型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句