您好,我無法創建從一段時間開始到另一段時間的常規時間間隔的列表。你可以幫我嗎? (SWIFT 2.0)創建時間間隔Swift的列表
實施例:
我有兩個時間(8:00 - 23:00)。我知道這段時間的持續時間(30分鐘)。範圍是創建一個時間間隔數組(8:00-8:30,8:30-9:00等)。我使用一個對象通話時間(啓動:詮釋,最終的:int)
謝謝
您好,我無法創建從一段時間開始到另一段時間的常規時間間隔的列表。你可以幫我嗎? (SWIFT 2.0)創建時間間隔Swift的列表
實施例:
我有兩個時間(8:00 - 23:00)。我知道這段時間的持續時間(30分鐘)。範圍是創建一個時間間隔數組(8:00-8:30,8:30-9:00等)。我使用一個對象通話時間(啓動:詮釋,最終的:int)
謝謝
你可以創建一個類像這樣產生這樣的間隔,
struct Time {
let start: NSTimeInterval
let end: NSTimeInterval
let interval: NSTimeInterval
init(start: NSTimeInterval, interval: NSTimeInterval, end: NSTimeInterval) {
self.start = start
self.interval = interval
self.end = end
}
init(startHour: NSTimeInterval, intervalMinutes: NSTimeInterval, endHour: NSTimeInterval) {
self.start = startHour * 60 * 60
self.end = endHour * 60 * 60
self.interval = intervalMinutes * 60
}
var timeRepresentations: [String] {
let dateComponentFormatter = NSDateComponentsFormatter()
dateComponentFormatter.unitsStyle = .Positional
dateComponentFormatter.allowedUnits = [.Minute, .Hour]
let dateComponent = NSDateComponents()
return timeIntervals.map { timeInterval in
dateComponent.second = Int(timeInterval)
return dateComponentFormatter.stringFromDateComponents(dateComponent)!
}
}
var timeIntervals: [NSTimeInterval]{
return Array(start.stride(through: end, by: interval))
}
}
let time = Time(startHour: 8, intervalMinutes: 30, endHour: 23)
print(time.timeRepresentations)
和產生,
[「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 11:30" , 「21:00」, 「21:30」, 「22:00」, 「22:30」, 「23:00」]
並檢索範圍,把這個代碼在結束
let time = Time(startHour: 8, intervalMinutes: 30, endHour: 23)
let ranges = time.timeRepresentations.enumerate().flatMap { index, value -> String? in
if index + 1 < time.timeRepresentations.count {
return value + " - " + time.timeRepresentations[index + 1]
}
return nil
}
其結果將是,
[ 「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」]
您可以在viewDidLoad方法創建一個這樣的安排計時器,但首先定義一個選擇撥打您的方法電話,
let mySelector: Selector = "time:end:"
NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: mySelector, userInfo: nil, repeats: true)
,然後定義你的時間的方法
func time(start: Int, end: Int) {
// code goes here, this method will called every 30 minutes.
}
所以現在你可以創建一個列表,並添加開始和結束PARAMS。
含始端的元組
let startDate = NSDate()
let endDate = NSDate()
var intervalsContainer = [(start: NSDate, end: NSDate)]()
var intervalDate = startDate;
var dateComponents30Min = NSDateComponents()
dateComponents30Min.minute = 30
let calendar = NSCalendar.currentCalendar()
while(endDate.compare(intervalDate) == NSComparisonResult.OrderedDescending) {
let finDate = calendar.dateByAddingComponents(dateComponents30Min, toDate: intervalDate, options: [])!
intervalsContainer.append((intervalDate,finDate))
intervalDate = finDate
}
如果結束時間是在午夜之後,我必須修改什麼? – SalvatoreAD
沒什麼,它仍然會工作 – ogres
好的,謝謝。 \t 我必須修改的內容如果我想在當前時間之前隱藏時間? – SalvatoreAD
確定,如果我想創建的兩倍(例如陣列中的簡單的數組:[ 「8:00-8:30」,「8:30- 9:00「]),我必須修改? – SalvatoreAD
@SalvatoreAD查看我的編輯 – Sandeep
非常感謝:) – SalvatoreAD