如何获得两小时间隔的日期时间



我尝试了几种方法,但没有找到可行的解决方案
从今天到接下来的五天,我需要两个小时的datetime间隔,时间范围必须是早上7:00到晚上22:00。

到目前为止,我尝试的是:

let cal = Calendar(identifier: Calendar.Identifier.gregorian)
for i in 1..<6{
let date = Date()
var components = DateComponents()
components.setValue(i, for: .day)
let expirationCal = cal.date(byAdding: components, to: date)

let calendar = NSCalendar.autoupdatingCurrent
for i  in 0..<12 {
var  newDateTime = calendar.date(byAdding: Calendar.Component.hour, value: 1, to: expirationCal!)
let currentHour = calendar.component(.hour, from: newDateTime!)
let hourInt = Int(currentHour.description)!
if hourInt >= 8 && hourInt <= 22 {
print(newDateTime)
}
}
}

我的建议:

  • 计算开始和结束日期
  • 从开始到结束按整小时枚举日期,并过滤给定范围中的偶数日期

    let cal = Calendar(identifier: .gregorian)
    let startDate = Date()
    let endDate = cal.date(byAdding: .day, value: 5, to: startDate)
    let fullHourComponents = DateComponents(minute: 0, second: 0)
    var dates = [Date]()
    cal.enumerateDates(startingAfter: startDate, matching: fullHourComponents, matchingPolicy: .nextTime) { date, strict, stop in
    if let validDate = date {
    if validDate == endDate { stop = true; return}
    let currentHour = cal.component(.hour, from: validDate)
    if currentHour.isMultiple(of: 2), (7..<23) ~= currentHour {
    dates.append(validDate)
    }
    }
    }
    print(dates)
    

考虑打印日期为UTC

最新更新