【发布时间】:2018-11-07 20:56:02
【问题描述】:
例如:
startDate:- 20-08-2018 10:00 AM
endDate:- 20-08-2018 02:30 PM
输出:[“10:00 AM”,“10:30 AM”,“11:00 AM”,“11:30 AM”,“12:00 PM”, “12:30 PM”、“01:00 PM”、“01:30 PM”、“02:00 PM”、“02:30 PM”]
var fromTime:Date = getFromTime
fromTime = fromTime.addingTimeInterval(-1800)
guard let toTime:Date = timeFormat.date(from:endTime) else {
return nil
}
var dateByAddingThirtyMinute : Date!
let timeinterval : TimeInterval = toTime.timeIntervalSince(fromTime)
let numberOfIntervals : Double = timeinterval / 3600;
var timeArrayAM = [String]()
var timeArrayPM = [String]()
for _ in stride(from: 0, to: Int(numberOfIntervals * 2), by: 1) {
dateByAddingThirtyMinute = fromTime.addingTimeInterval(1800)
fromTime = dateByAddingThirtyMinute
if let dateString = dateByAddingThirtyMinute.format(with: "hh:mm a") as? String {
// print("Time after 30 min = \(dateString)")
if temp == 0 {
let time = dateString
guard let getStopTime = timeFormat.date(from: time) else {
return nil
}
var stopTime = getStopTime
var date = Date()
date = date.addingTimeInterval(TimeInterval(advanceTimeInterval*60))
let calendar = Calendar.current
let year = calendar.component(.year, from: date)
let month = calendar.component(.month, from: date)
let day = calendar.component(.day, from: date)
let hour = calendar.component(.hour, from: stopTime)
let minute = calendar.component(.minute, from: stopTime)
stopTime = calendar.date(bySetting: .year, value: year, of: stopTime)!
stopTime = calendar.date(bySetting: .month, value: month, of: stopTime)!
stopTime = calendar.date(bySetting: .day, value: day, of: stopTime)!
stopTime = calendar.date(bySetting: .hour, value: hour, of: stopTime)!
stopTime = calendar.date(bySetting: .minute, value: minute, of: stopTime)!
let timeDifference = calendar.dateComponents([.hour, .minute], from: stopTime, to: date)
// print_debug("************************************")
// print(timeDifference.hour, timeDifference.minute)
if timeDifference.hour! < 0 || timeDifference.minute! < 0 || (timeDifference.hour! == 0 && timeDifference.minute! == 0 ) {
showFirstTime = dateString
temp = 1
}
// print_debug("************************************")
}
【问题讨论】:
-
在开始和结束之间或每 30 分钟循环一次并将其添加到列表中...您为什么不自己努力并尝试编写这样的代码。如果您的代码有问题,请将其带回此处并显示给我们
-
始终显示您目前获得的代码。
-
@musefan 在这里我把问题简单化了,在这里我给你两个日期,在我的情况下,我有两次“10:00 AM”“02:30 PM”,所以在这个情况下,获取时隙数组变得如此困难。
-
@VipulKumar:好的,现在告诉我们你的代码有什么问题?有用吗?
-
正如我所说的那样,我想知道你们是否有更好的方法来做到这一点。