![](/img/trans.png)
[英]How can I consistently get the count of or a list of all of the days between two dates in swift4?
[英]How can i compare two dates (NSDate) in Swift 3 and get the days between them?
如何比較Swift 3中的兩個日期? 我找到了許多其他Swift版本的解決方案,但它們對我不起作用。
let clickedDay:String = currentcell.DayLabel.text!
let currentDate = NSDate()
let currentDay = "" //want the current day
let dateFormatter = DateFormatter()
var dateAsString = ""
if Int(clickedDay)! < 10 {
dateAsString = "0" + clickedDay + "-11-2016 GMT"
}
else {
dateAsString = clickedDay + "-11-2016 GMT"
}
dateFormatter.dateFormat = "dd-MM-yyyy zzz"
let clickedDate = dateFormatter.date(from: dateAsString)
if currentDate as Date >= clickedDate! as Date {
return true
}
else {
//Want to get the days between the currentDate and clickedDate
let daysLeft = ""
}
我比較了拖曳日期,但我想要那些拖曳日期之間的日子。 有人可以幫我嗎? 謝謝,問候
補充:如果我有日期22.11.2016和當前日期(現在是18.11.2016)我想要它之間的日子(在這種情況下是4)
只需像這樣延長Date
並在幾天內獲得差異。
extension Date {
func daysBetweenDate(toDate: Date) -> Int {
let components = Calendar.current.dateComponents([.day], from: self, to: toDate)
return components.day ?? 0
}
}
現在使用這個擴展名
let numOfDays = fromDate.daysBetweenDate(toDate: toDate)
您可以使用DateFormatter
將String轉換為Date。
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
dateFormatter.timeZone = TimeZone(abbreviation: "GMT")
let date = dateFormatter.date(from: "18-11-2016")
使用此函數獲取兩個日期之間的所有中間日期,只檢查下降日期(最終日期)是否大於上升日期(第一個日期)然后訂單是+1,否則訂單-1: -
func selectDates(from upDate : Date, to downDate : Date, order : Int){
var selectDate = Calendar.current.date(byAdding: .day, value: order, to: upDate)!
while compareDate(dateInitial: selectDate, dateFinal: downDate) != true{
print(" intermediate date is \(selectDate)")
selectDate = Calendar.current.date(byAdding: .day, value: order, to: selectDate)!
}
print("*** intermediate dates are selected ***")
}
func compareDate(dateInitial:Date, dateFinal:Date) -> Bool {
let order = Calendar.current.compare(dateInitial, to: dateFinal, toGranularity: .day)
switch order {
case .orderedSame:
return true
default:
return false
}
}
試試這一個
let startDateComparisionResult:ComparisonResult = currentDate.compare(clickedDate! as NSDate)
if startDateComparisionResult == ComparisonResult.orderedAscending
{
// Current date is smaller than end date.
}
else if startDateComparisionResult == ComparisonResult.orderedDescending
{
// Current date is greater than end date.
}
else if startDateComparisionResult == ComparisonResult.orderedSame
{
// Current date and end date are same
}
嘗試:
let days=Calendar.current.dateComponents([.day], from: date_1, to: date_2)
let nb_days=days.day
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.