您好,我无法创建从一段时间开始到另一段时间的常规时间间隔的列表。你可以帮我吗? (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