gpt4 book ai didi

ios - 如何在 plist 中保存持续时间?

转载 作者:行者123 更新时间:2023-11-29 10:39:20 25 4
gpt4 key购买 nike

如何在 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 分钟。看起来像 4 小时 29 分 24 秒。如果我通过 dateFormatter 返回日期,它肯定会打印出 15m。如何在 plist 中输入持续时间,如下所示?

plist

我错过了什么?

最佳答案

由于时区、闰年和闰秒等原因,日期非常复杂。它们不适合这种用例,您在尝试使用它们时会遇到各种错误。

持续时间的正确数据类型是 NSTimeInterval,它是一个 64 位 float ,以秒为单位。 NSDate 在内部也使用这种数据类型。

创建时间间隔的最简单方法是:

NSDate *aDate = ...
NSDate *anotherDate = ...
NSTimeInterval duration = [aDate timeIntervalSinceDate:anotherDate];

然后你会用 NSNumber 把它保存到一个 plist 中:

NSNumber *durationNumber = [NSNumber numberWithDouble:duration];

注意 NSTimeInterval 实际上是一个 double。

关于ios - 如何在 plist 中保存持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25276349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com