我正在嘗試從Date對象數組中獲取最近的時間(小時和分鐘)到當前時間(小時和分鐘)。如何從日期數組中獲取當前時間的最近時間? iOS,Swift 3
我想要的不是比較和找到最接近的日期,而是時間(僅限於小時和分鐘)。有沒有任何iOS方式/ Swfit 3可以有效地做到這一點?
編輯: 最接近的時間是「前進」順時針,而不是向後看的時候。
EDIT2: 下面是一個示例:
import Foundation
let userCalendar = Calendar.current
var firstDateComponents = DateComponents()
firstDateComponents.year = 2017
firstDateComponents.month = 1
firstDateComponents.day = 1
firstDateComponents.hour = 23
firstDateComponents.minute = 50
let firstDate = userCalendar.date(from: firstDateComponents)
var secondDateComponents = DateComponents()
secondDateComponents.year = 2016
secondDateComponents.month = 12
secondDateComponents.day = 24
secondDateComponents.hour = 23
secondDateComponents.minute = 55
let secondDate = userCalendar.date(from: secondDateComponents)
var thirdDateComponents = DateComponents()
thirdDateComponents.year = 2017
thirdDateComponents.month = 3
thirdDateComponents.day = 1
thirdDateComponents.hour = 0
thirdDateComponents.minute = 30
let thirdDate = userCalendar.date(from: thirdDateComponents)
var fourthDateComponents = DateComponents()
fourthDateComponents.year = 2017
fourthDateComponents.month = 3
fourthDateComponents.day = 1
fourthDateComponents.hour = 4
fourthDateComponents.minute = 20
let fourthDate = userCalendar.date(from: fourthDateComponents)
var currentDateComponents = DateComponents()
currentDateComponents.year = 2017
currentDateComponents.month = 3
currentDateComponents.day = 2
currentDateComponents.hour = 0
currentDateComponents.minute = 10
let currentDate = userCalendar.date(from: currentDateComponents)
let dates = [firstDate, secondDate, thirdDate, fourthDate]
這個例子的預期的結果將是包含數據結構中心(12:30 AM),所述第三日期。
EDIT3: 好一會解決方案:
爲了獲取時間的組件和帶不相關的最新信息:
let dateComponentsFromDates = dates.map { date -> DateComponents in
let dateComponents = DateComponents(calendar: userCalendar, timeZone: nil, era: nil, year: nil, month: nil, day: nil, hour: userCalendar.component(.hour, from: date!), minute: userCalendar.component(.minute, from: date!), second: nil, nanosecond: nil, weekday: nil, weekdayOrdinal: nil, quarter: nil, weekOfMonth: nil, weekOfYear: nil, yearForWeekOfYear: nil)
return dateComponents
}
我相信他們願意比較小時/分鐘,忽略日/月/年組件;即。如果現在是10:20,那麼週日的10:19比周二的9:20('今天')「接近」 – Paulw11
'23:59'接近'0:01'還是'23:50'? – kennytm
看來你必須比較日期和Swift 3比較日期是如此簡單,因爲它的可比較&等於 – abdullahselek