写一个实例方法按这几分钟推进时间

时间:2016-10-30 18:53:20

标签: swift class methods time instance

我是新手,我正在自学。我知道习惯上有样本代码,但我非常迷失。我试图编写一个将放在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

1 个答案:

答案 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)
    }
}