2015-02-01 2 views
-2

Я немного новичок, поэтому будьте медленны со мной.Расстояние между двумя датами в Свифт, когда одна строка

Я делаю приложение в swift, и у меня есть переменная dateCreated, которая представляет собой строку с датами в формате «yyyy-MM-dd».

Я пытаюсь создать другую переменную currentDate, которая является текущей датой, и найти количество дней между ними как Int.

Может ли кто-нибудь помочь мне найти лучший способ сделать это? Я попытался использовать методы из похожих вопросов, которые я нашел на этом веб-сайте, но ничего не работает.

+0

Опубликовать код, который вы пробовали до сих пор –

+0

Чтобы преобразовать строку в пользователя NSDate NSDateFormatter – Arbitur

ответ

0

Что вы ищете - это структура NSCalendar, которая поможет вам рассчитать разницу между двумя датами. Я предлагаю вам создать расширение, чтобы помочь вам с ним следующим образом:

extension NSDate { 
    func daysFrom(date:NSDate) -> Int { 
     return NSCalendar.currentCalendar().components(.CalendarUnitDay, fromDate: date, toDate: self, options: nil).day 
    } 
    func xDays(days: Int) -> NSDate { 
     return NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitDay, value: days, toDate: self, options: nil)! 
    } 
    func xWeeks(days: Int) -> NSDate { 
     return NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitWeekOfYear, value: days, toDate: self, options: nil)! 
    } 
} 

let yesterday = NSDate().xDays(-1) // "Jan 31, 2015, 17:41" 
let lastWeek = NSDate().xWeeks(-1) // "Jan 25, 2015, 17:42" 

NSDate().daysFrom(yesterday)   // 1 
NSDate().daysFrom(lastWeek)   // 7 

Если вам нужно вычислить его из строки можно также создать расширение для конвертирования строки в NSDate следующим образом:

extension String { 
    var asDate: NSDate { 
     let formatter = NSDateFormatter() 
     formatter.dateFormat = "yyyy-MM-dd" 
     return formatter.dateFromString(self)! 
    } 
} 

NSDate().daysFrom("2015-01-01".asDate) // 31 
+0

'var numOfDays = NSDate(). DaysFrom (createDateNew.asDate)' Я попытался использовать код, который вы отправили, но на этой строке (взятый из последней строки вашего второго блока кода), я получаю сообщение об ошибке «NSDate не га ve член с именем 'daysFrom' " – adamarimba

+0

Как это означает, что он работает? – adamarimba

+0

Если вы получили сообщение об ошибке, которое предотвращает запуск кода, это означает, что он не работает – adamarimba

Смежные вопросы