NSDate разница времени

nsdate

#21

То что нужно! спасибо!


#22

А подскажите, как сравнивать даты, не время? Сейчас у меня реализовано так:

// в массиве даты в формате NSDate(в секундах)
for item in dateArray{
    let birthday = item.birthday
    // Приходится прибавлять 2 дня, так как не учитывается сам день рождения
    let ageInSeconds = NSDate().timeIntervalSince(birthday as! Date) + 172800
    let formatter = DateComponentsFormatter()
    formatter.allowedUnits = [.year, .month, .day]
    formatter.unitsStyle = .abbreviated
    cell.ageLabel.text = formatter.string(from: TimeInterval(ageInSeconds))
}

Считает как-то не правильно

Может я что-то не то делаю?


#23

Если Ваш вопрос как сравнивать даты, то ответ очень прост:

let date = Date()
let date1 = Date(timeIntervalSinceNow: 10)

if date > date1 {
    print("date is bigger date1")
} else {
    print("date1 is bigger date")
}

В данном случае date будет всегда меньше date1. В Вашем случае все будет считаться точно так же.


#24

Видимо я не точно изъяснился. Как сравнить я понял, вопрос в том как отнять текущую дату от заданной, чтобы получить разницу=)


#25

Вы же можете все в секундах отобразить. У Вас в консоли плейграунда уже отображается разница между датами в секундах.


#26

так и делаю

print(formatter.string(from: ageInSeconds)!)

но если посчитать, то разница в 1 день, так как к примеру от 18.11.2015 до сегодняшнего дня прошло 1 год 4 месяца и 24 дня, а если смотреть расчет, то 23 дня, мне приходится делать так

print(formatter.string(from: ageInSeconds + 86400)!)

чтобы было точно. Думал что не правильно делаю, а получается что это такая фича что-ли, не учитывать день с которого начинается отчет?