Как проверить, что данная дата была в течение x дней в Swift 3

Имея переменную для количества дней и конкретную дату, как мы можем проверить, относится ли указанная дата к прошедшему количеству дней.

Другими словами, как я могу проверить, был ли dateVar в течение последних 7 дней или каким бы ни было значение числа.

var number = 7

var dateVar = "29-11-2016 13:21:33"

person SwiftStarter    schedule 29.11.2016    source источник


Ответы (1)


Сначала вам нужно преобразовать строку даты в объект Date, а затем вы можете использовать DateComponent, чтобы найти разницу между этой датой и текущей датой в днях и сравнить эти дни с вашим числом, что-то вроде этого.

let dateVar = "29-11-2016 13:21:33"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss"
if let date = dateFormatter.date(from: dateVar) {
    print(date)
    let numberOfDays = Calendar.current.dateComponents([.day], from: date, to: Date()).day ?? 0
    print(numberOfDays)
    if numberOfDays <= number {
         print("DateVar with in number of days")
    }
}
person Nirav D    schedule 29.11.2016
comment
@SwiftStarter Добро пожаловать, приятель :) - person Nirav D; 29.11.2016
comment
@NiravD В этой строке нет ничего, что говорило бы о том, что TimeZone — это GMT. Вы не должны устанавливать его вручную по Гринвичу. TimeZone является и всегда должен быть локальным временем при использовании средства форматирования даты, если оно явно не указано в строке. - person Leo Dabus; 29.11.2016
comment
@NiravD не нужно иметь с этим дело, просто удалите эту строку - person Leo Dabus; 29.11.2016