Ich versuche herauszufinden, wie ich entscheiden kann, ob ein bestimmter Zeitstempel heute oder +1 / -1 Tage auftritt. Im Wesentlichen 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'
Entscheidend ist jedoch, dass es in Swift sein muss und ich Probleme mit den NSDate / NSCalendar-Objekten habe. 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())
Ein Vergleich auf diese Weise ist jedoch nicht einfach, da er .Day
je nach Tageszeit und Zeitstempel unterschiedlich ist. In PHP würde ich nur mktime verwenden, um ein neues Datum zu erstellen, basierend auf dem Beginn des Tages (dh mktime(0,0,0)
), aber ich bin mir nicht sicher, wie ich das in Swift am einfachsten machen kann.
Hat jemand eine gute Idee, wie man das angeht? Vielleicht wäre eine Erweiterung auf NSDate oder ähnliches am besten?