从上午 9 点到晚上 11 点获取一天中的所有时间(以日期格式)并保存在 Swift 中的数组中

Get All Hours of The Day (in date format) from 9am tp 11pm and Save within an array in Swift

我需要获取从当前时间到晚上 11 点的所有剩余时间,并将其以日期格式保存在数组中。这是我到目前为止所写的内容:

var sortedTime: [Date] = {

    let today = Date()
    var sortedTime: [Date] = []

    (0..<14).forEach {
        sortedTime.append(Calendar.current.date(byAdding: .hour, value: [=11=], to: today)!)            
    }

    return sortedTime
}()

在我的代码中:(0..<14).forEach {这给了我接下来的 14 个小时,但这不是我需要的;我需要确保我得到的时间是在上午 9 点到晚上 11 点之间。我怎样才能设置这个限制?

当您访问任何日历的 .hour 时,其格式为 24 小时制。所以你需要这样的东西:

let today = Date()
var sortedTime: [Date] = []
var calender = Calendar(identifier: .iso8601)
calender.locale = Locale(identifier: "en_US_POSIX")
let currentHour = calender.component(.hour, from: today)
(0...(24-currentHour)).forEach {
    guard let newDate = calender.date(byAdding: .hour, value: [=10=], to: today) && calender.component(.hour, from: newDate) != 0,
        calender.component(.hour, from: newDate) <= 23 else {
        return
    }
    //convert date into desired format
    sortedTime.append(newDate)
}