Comment comparer deux dates dans Swift 3? J'ai trouvé de nombreuses solutions pour d'autres versions de Swift, mais elles ne fonctionnent pas pour moi.
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 = ""
}
Je compare les dates de remorquage, mais je veux les jours qui sont entre ces dates de remorquage . Quelqu'un peut-il m'aider à pls? Merci et salue
Ajouté: Si j'ai la date du 22.11.2016 et la date du jour (maintenant le 18.11.2016), je veux les jours entre les deux (dans ce cas 4)
Faites simplement une extension de Date
comme ceci et obtenez la différence en jours.
extension Date {
func daysBetweenDate(toDate: Date) -> Int {
let components = Calendar.current.dateComponents([.day], from: self, to: toDate)
return components.day ?? 0
}
}
Maintenant, utilisez cette extension comme ceci
let numOfDays = fromDate.daysBetweenDate(toDate: toDate)
Vous pouvez utiliser DateFormatter
pour convertir String en Date de cette manière.
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
dateFormatter.timeZone = TimeZone(abbreviation: "GMT")
let date = dateFormatter.date(from: "18-11-2016")
Essaye celui-là
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
}
Utilisez cette fonction pour obtenir toutes les dates intermédiaires entre deux dates. Il vous suffit de vérifier si la date de péremption (date finale) est supérieure à la date de péremption (première date), alors l'ordre vaut +1, sinon l'ordre -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
}
}
Essayer:
let days=Calendar.current.dateComponents([.day], from: date_1, to: date_2)
let nb_days=days.day