0

我有一个名为 Song 的自定义类。此类的每个实例都需要一个表示其持续时间的属性,并且我希望该持续时间采用正常的“歌曲”格式,例如 HH:MM:SS。Song 实例将从 JSON 网络调用接收数据,例如持续时间,并且它们也可能通过 Core Data 或其他方法进行持久化。

我有哪些选择来存储此持续时间?我需要存储它有一个像这样的字符串吗

self.duration = @"0:2:14";

或者

 self.duration = @"0.2.14";

将其存储为 NSDate 的 NSNumber 会更好吗?如果是这样,我如何将其转换为这些类型?如果我需要将其存储为字符串,是否有比拆分冒号更好的方法将其转换为数字/时间间隔?

4

2 回答 2

1

您应该将持续时间以秒为单位(或毫秒,如果您想精确的话)存储为整数。然后在显示时间时将其转换为漂亮的格式,例如通过一种方法-(NSString*)displayDuration

如果您像这样声明您的持续时间属性

@property (nonatomic) int duration;

那么你可以编写一个方法来获得一个NSString显示:

- (NSString*)displayDuration {
    int remainingDuration = self.duration;
    int seconds = remainingDuration%60;
    remainingDuration/=60;
    int minutes = remainingDuration%60;
    remainingDuration/=60;
    int hours = remainingDuration;
    return [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
}
于 2013-04-08T06:50:40.340 回答
0

利用NSDateComponent

let cal = NSCalendar.currentCalendar()            
let comps = cal.components([.Day, .Hour, .Minute], fromDate: self, toDate: otherDate, options: [])
return (comps.day , comps.hour , comps.minute)

其中 self 是 aNSDate并且 otherDate 也是 a NSDate(这被实现为 的扩展NSDate

随意添加组件(这里只有天、小时、分钟)

示例代码返回一个元组。可通过.0,访问.1.2允许以任何必要的方式格式化字符串。

代码在 Swift 2 中

于 2015-10-29T11:01:37.353 回答