Ios 提取时间数组中最接近当前时间的时间。大学环行巴士到达通知系统
我将在大学内提供一个循环巴士通知系统 我想提取最接近时间数组(gateArray)中当前时间的时间,并告诉我还有多少分钟才能到达 例如,如果数组gateArray=[“07:40”、“08:00”、“08:16”、“08:32”、“08:48”、“09:04”、“09:20”], 如果当前时间为08:03,则阵列的输出时间为08:16而不是08:00,并且出发时间与当前时间之间的差值为08:16(出发时间)-08:03(当前时间),以计算时间间隔并显示UITextView->>“13分钟后出发” 当前时间上午09:00>>门阵列到“09:04”提取>>4分钟后出发”Ios 提取时间数组中最接近当前时间的时间。大学环行巴士到达通知系统,ios,iphone,arrays,time,swift3,Ios,Iphone,Arrays,Time,Swift3,我将在大学内提供一个循环巴士通知系统 我想提取最接近时间数组(gateArray)中当前时间的时间,并告诉我还有多少分钟才能到达 例如,如果数组gateArray=[“07:40”、“08:00”、“08:16”、“08:32”、“08:48”、“09:04”、“09:20”], 如果当前时间为08:03,则阵列的输出时间为08:16而不是08:00,并且出发时间与当前时间之间的差值为08:16(出发时间)-08:03(当前时间),以计算时间间隔并显示UITextView->>“13分钟后出发”
当前时间上午09:05>>门阵列到“09:20”提取>>“15分钟后出发”Swift 3版本,增加了第二天案例处理:
import UIKit
struct ArrivalDataContainer {
var date = Date()
var timeString = "00:00"
var currentMinuteDifference = 0
}
let currentDate = Date()
let unitFlags: Set = Set<Calendar.Component>([.day, .month, .year])
var components = NSCalendar.current.dateComponents(unitFlags, from: currentDate)
let gateArray = ["07:40", "08:00", "08:16", "08:32", "08:48", "09:04", "09:20", "23:00"]
var arrivalArray = [ArrivalDataContainer]()
for timeString in gateArray {
let timeAndMinutes = timeString.components(separatedBy: ":")
components.setValue(Int(timeAndMinutes[0])!, for: .hour)
components.setValue(Int(timeAndMinutes[1])!, for: .minute)
let newDate = NSCalendar.current.date(from: components)
let difference = NSCalendar.current.dateComponents(Set<Calendar.Component>([.minute]), from: currentDate, to: newDate!).minute
let dataContainer = ArrivalDataContainer(date: newDate!, timeString: timeString, currentMinuteDifference: difference!)
arrivalArray.append(dataContainer)
}
let minimumPositiveDifference = arrivalArray.filter{ $0.currentMinuteDifference > 0 }.sorted(by: { $0.currentMinuteDifference < $1.currentMinuteDifference }).first
if let firstWithinSameDay = minimumPositiveDifference {
print("Departure in \(firstWithinSameDay.currentMinuteDifference) minute(s)")
}
else {
let largestNegativeDifference = arrivalArray.sorted(by: { $0.currentMinuteDifference < $1.currentMinuteDifference }).first
print("Next departure \(largestNegativeDifference?.timeString)")
}
导入UIKit
结构ArrivalDataContainer{
变量日期=日期()
var timeString=“00:00”
var CurrentMinutedDifference=0
}
让currentDate=Date()
let unitFlags:Set=Set([.day、.month、.year])
var components=NSCalendar.current.dateComponents(unitFlags,from:currentDate)
让gateArray=[“07:40”、“08:00”、“08:16”、“08:32”、“08:48”、“09:04”、“09:20”、“23:00”]
var arrivalArray=[ArrivalDataContainer]()
用于网关阵列中的时间字符串{
让timeAndMinutes=timeString.components(以“:”分隔)
setValue(Int(timeAndMinutes[0])!,表示:。小时)
setValue(Int(timeAndMinutes[1])!,表示:。分钟)
让newDate=NSCalendar.current.date(from:components)
让difference=NSCalendar.current.dateComponents(Set(.minute)),from:currentDate,to:newDate!).minute
让dataContainer=ArrivalDataContainer(日期:newDate!,时间字符串:时间字符串,currentMinuteDifference:difference!)
arrivalArray.append(数据容器)
}
让minimumPositiveDifference=arrivalArray.filter{$0.currentMinuteDifference>0}。排序(按:{$0.currentMinuteDifference<$1.currentMinuteDifference})。首先
如果let firstWithinSameDay=最小正差{
打印(“在\(第一次在上午。当前分钟差异)分钟内离开”)
}
否则{
设largestNegativeDifference=arrivalArray.sorted(按:{$0.currentMinuteDifference<$1.currentMinuteDifference})。首先
打印(“下一次出发\(最大负差异?.timeString)”)
}
Swift 2版本这是最初的答案
import UIKit
struct ArrivalDataContainer {
var date = NSDate()
var timeString = "00:00"
var currentMinuteDifference = 0
}
let currentDate = NSDate()
let unitFlags: NSCalendarUnit = [.Day, .Month, .Year]
let components = NSCalendar.currentCalendar().components(unitFlags, fromDate: currentDate)
let gateArray = ["07:40", "08:00", "08:16", "08:32", "08:48", "09:04", "09:20", "23:00"]
var arrivalArray = [ArrivalDataContainer]()
for timeString in gateArray {
let timeAndMinutes = timeString.componentsSeparatedByString(":")
components.setValue(Int(timeAndMinutes[0])!, forComponent: .Hour)
components.setValue(Int(timeAndMinutes[1])!, forComponent: .Minute)
let newDate = NSCalendar.currentCalendar().dateFromComponents(components)
let difference = NSCalendar.currentCalendar().components([.Minute], fromDate: currentDate, toDate: newDate!, options: []).minute
let dataContainer = ArrivalDataContainer(date: newDate!, timeString: timeString, currentMinuteDifference: difference)
arrivalArray.append(dataContainer)
}
let minimumPositiveDifference = arrivalArray.filter{ $0.currentMinuteDifference > 0 }.sort({ $0.currentMinuteDifference < $1.currentMinuteDifference })[0].currentMinuteDifference
print("Departure in \(minimumPositiveDifference) minute(s)")
导入UIKit
结构ArrivalDataContainer{
var date=NSDate()
var timeString=“00:00”
var CurrentMinutedDifference=0
}
让currentDate=NSDate()
let unitFlags:NSCalendarUnit=[.Day、.Month、.Year]
让components=NSCalendar.currentCalendar().components(unitFlags,fromDate:currentDate)
让gateArray=[“07:40”、“08:00”、“08:16”、“08:32”、“08:48”、“09:04”、“09:20”、“23:00”]
var arrivalArray=[ArrivalDataContainer]()
用于网关阵列中的时间字符串{
让timeAndMinutes=timeString.componentsSeparatedByString(“:”)
组件。设置值(Int(timeAndMinutes[0])!,用于组件:。小时)
组件。设置值(Int(timeAndMinutes[1])!,用于组件:。分钟)
让newDate=NSCalendar.currentCalendar().dateFromComponents(组件)
让difference=NSCalendar.currentCalendar().components([.Minute],fromDate:currentDate,toDate:newDate!,选项:[]).Minute
让dataContainer=ArrivalDataContainer(日期:newDate!、时间字符串:时间字符串、currentMinuteDifference:difference)
arrivalArray.append(数据容器)
}
设minimumPositiveDifference=arrivalArray.filter{$0.currentMinuteDifference>0}.sort({$0.currentMinuteDifference<$1.currentMinuteDifference})[0]。currentMinuteDifference
打印(“在\(最小正差)分钟内离开”)