Swift - Überprüfen Sie, ob ein Zeitstempel gestern, heute, morgen oder vor X Tagen ist.

Ich versuche herauszufinden, ob ein bestimmter Zeitstempel heute oder an +1 / -1 Tagen auftritt. Im Grunde möchte ich so etwas machen (Pseudocode)

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'

Crucially aber muss es in Swift sein und ich kämpfe mit den NSDate / NSCalendar-Objekten. Ich begann damit, den Zeitunterschied wie folgt zu berechnen:

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

Vergleichen auf diese Weise ist jedoch nicht einfach, weil die.Day ist je nach Tageszeit und Zeitstempel unterschiedlich. In PHP würde ich einfach mktime verwenden, um ein neues Datum basierend auf dem Tagesanfang zu erstellen (d. H.mktime(0,0,0)), aber ich bin mir nicht sicher, wie das am einfachsten in Swift geht.

Hat jemand eine gute Idee, wie man das angeht? Vielleicht wäre eine Erweiterung auf NSDate oder ähnliches am besten?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage