我是新手,我正在自学。我知道习惯上有样本代码,但我非常迷失。我试图编写一个将放在advance
类中的实例方法ClockTime
。该方法接受若干分钟作为其参数,并将您的对象及时向前移动该分钟数。传递的分钟数可以是任何非负数,甚至是500或1000000之类的大数。如果有必要,您的对象可能会在下一个小时或一天内被包裹,或者它可能从早上开始包裹(" AM&#34 ;)到晚上(" PM"),反之亦然。
注意:ClockTime
对象并不关心它是哪一天;如果你从晚上11:59开始前进1分钟,那就是凌晨12:00。
例如,以下调用将产生以下结果:
ClockTime time = new ClockTime(6, 27, "PM");
time.advance(1); // 6:28 PM
time.advance(30); // 6:58 PM
答案 0 :(得分:1)
你可能想要这样的东西:
struct ClockTime {
var hour: Int {
return components.hour!
}
var minute: Int {
return components.minute!
}
private var internalTime = Date()
private var components: DateComponents {
return Calendar.current.dateComponents([.hour, .minute], from: internalTime)
}
mutating func advance(by minutes: TimeInterval) {
internalTime.addTimeInterval(minutes * 60)
}
}