创建Time Interval Swift列表

Sal*_*eAD 2 time intervals ios swift

您好,我无法创建从到达另一个时间开始的常规时间间隔列表.你能帮助我吗?(Swift 2.0)

例:

我有两次(8:00 - 23:00).我知道间隔的持续时间(30分钟).范围是创建一个时间间隔数组(8:00-8:30,8:00-9:00等).我使用对象调用Time(start:Int,end:Int)

谢谢

San*_*eep 6

您可以创建一个这样的类来生成这样的间隔,

struct Time {

    let start: TimeInterval
    let end: TimeInterval
    let interval: TimeInterval

    init(start: TimeInterval, interval: TimeInterval, end: TimeInterval) {
        self.start = start
        self.interval = interval
        self.end = end
    }

    init(startHour: TimeInterval, intervalMinutes: TimeInterval, endHour: TimeInterval) {
        self.start = startHour * 60 * 60
        self.end = endHour * 60 * 60
        self.interval = intervalMinutes * 60
    }

    var timeRepresentations: [String] {
        let dateComponentFormatter = DateComponentsFormatter()
        dateComponentFormatter.unitsStyle = .positional
        dateComponentFormatter.allowedUnits = [.minute, .hour]

        var dateComponent = DateComponents()
        return timeIntervals.map { timeInterval in
            dateComponent.second = Int(timeInterval)
            return dateComponentFormatter.string(from: dateComponent)!
        }
    }

    var timeIntervals: [TimeInterval]{
        return Array(stride(from: start, through: end, by: interval))
    }
}
Run Code Online (Sandbox Code Playgroud)

这会产生,

["8:00","8:30","9:00","9:30","10:00","10:30","11:00","11:30"," 12:00","12:30","13:00","13:30","14:00","14:30","15:00","15:30","16: 00","16:30","17:00","17:30","18:00","18:30","19:00","19:30","20:00" ,"20:30","21:00","21:30","22:00","22:30","23:00"]

要检索范围,请将此代码放在最后

let time = Time(startHour: 8, intervalMinutes: 30, endHour: 23)

print(time.timeRepresentations)
Run Code Online (Sandbox Code Playgroud)

结果就是,

["8:00 - 8:30","8:30 - 9:00","9:00 - 9:30","9:30 - 10:00","10:00 - 10:30" ,"10:30-11:00","11:00-11:30","11:30-12:00","12:00-12:30","12:30 - 13:00" ,"13:00-13:30","13:30-14:00","14:00-14:30","14:30-15:00","15:00-15:30" ,"15:30-16:00","16:00-16:30","16:30-17:00","17:00-17:30","17:30-18:00" ,"18:00-18:30","18:30-19:00","19:00-19:30","19:30-20:00","20:00-20:30" ,"20:30-21:00","21:00-21:30","21:30-22:00","22:00-22:30","22:30 - 23:00" ]