2015-10-26 1 views
0

В уведомлениях вы видите действия, которые показывают «отправлено 5 минут назад», Вот чего я пытаюсь достичь здесь. Функции ниже функционируют должным образом.расчетная продолжительность между NSDate swift 2

func daysBetweenDate(startDate: NSDate, endDate: NSDate) -> Int 
{ 
    let calendar = NSCalendar.currentCalendar() 

    let components = calendar.components([.Day], fromDate: startDate, toDate: endDate, options: []) 
// print(components.second) 
    return components.day 
} 

daysBetweenDate(postedDate, endDate: NSDate()) 

func hoursBetweenDate(startDate: NSDate, endDate: NSDate) -> Int 
{ 
    let calendar = NSCalendar.currentCalendar() 

    let components = calendar.components([.Hour], fromDate: startDate, toDate: endDate, options: []) 
    // print(components.second) 
    return components.hour 
} 

hoursBetweenDate(postedDate, endDate: NSDate()) 

Как узнать, есть ли дата, которая уже отправлена, секунда, минута, час или день. И вернуться в зависимости от того, что вам нужно?

Если продолжительность между двумя NSDates составляет более минуты, я хочу вывести «34 минуты назад», а когда это более часа, «2 часа назад» и так далее. Как я могу это сделать условно.

+0

вы ли попробовать поиск перед публикацией? Возможно, вы не найдете ответ на 'swift', но вы обязательно найдете его для' object-c'. – trojanfoe

+0

Вы, кажется, уже решили проблему. Я не понимаю, в чем вопрос сейчас. – matt

+0

@matt, если продолжительность между двумя NSDate превышает 1 минуту, я хочу вывести «34 минуты назад», а когда наступит час, «2 часа назад» и так далее. Как я могу это сделать условно. – suisied

ответ

2

Дайте две даты, вы можете сделать это довольно красиво с NSDateComponentsFormatter:

let form = NSDateComponentsFormatter() 
form.maximumUnitCount = 1 
form.unitsStyle = .SpellOut // or .Full, whatever you prefer 
let s = form.stringFromTimeInterval(
    d1.timeIntervalSinceReferenceDate - d2.timeIntervalSinceReferenceDate) 
+0

Вы понимаете, что вам нужно вычесть дату _earlier_ из _later_, не так ли? – matt