Swift: compruebe si una marca de tiempo es ayer, hoy, mañana o hace X días

Estoy tratando de averiguar cómo decidir si una marca de tiempo dada ocurre hoy, o +1 / -1 días. Esencialmente, me gustaría hacer algo como esto (Pseudocódigo)

IF days_from_today(timestamp) == -1 RETURN 'Yesterday'
ELSE IF days_from_today(timestamp) == 0 RETURN 'Today'
ELSE IF days_from_today(timestamp) == 1 RETURN 'Tomorrow'
ELSE IF days_from_today(timestamp) < 1 RETURN days_from_today(timestamp) + ' days ago'
ELSE RETURN 'In ' + days_from_today(timestamp) + ' ago'

Sin embargo, es crucial que esté en Swift y estoy luchando con los objetos NSDate / NSCalendar. Comencé a resolver la diferencia horaria de esta manera:

let calendar = NSCalendar.currentCalendar()
let date = NSDate(timeIntervalSince1970: Double(timestamp))
let timeDifference = calendar.components([.Second,.Minute,.Day,.Hour],
    fromDate: date, toDate: NSDate(), options: NSCalendarOptions())

Sin embargo, comparar de esta manera no es fácil, porque el.Day es diferente según la hora del día y la marca de tiempo. En PHP, solo usaría mktime para crear una nueva fecha, basada en el comienzo del día (es decir,mktime(0,0,0)), pero no estoy seguro de la forma más fácil de hacerlo en Swift.

¿Alguien tiene una buena idea sobre cómo abordar esto? ¿Quizás una extensión a NSDate o algo similar sería lo mejor?

Respuestas a la pregunta(5)

Su respuesta a la pregunta