Swift - check if a timestamp is yesterday, today, tomorrow, or X days ago
<p>I'm trying to work out how to decide if a given timestamp occurs today, or +1 / -1 days. Essentially, I'd like to do something like this (Pseudocode)</p>

<pre><code>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) &lt; 1 RETURN days_from_today(timestamp) + ' days ago'
ELSE RETURN 'In ' + days_from_today(timestamp) + ' ago'
</code></pre>

<p>Crucially though, it needs to be in Swift and I'm struggling with the NSDate / NSCalendar objects. I started with working out the time difference like this:</p>

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

<p>However comparing in this way isn't easy, because the <code>.Day</code> is different depending on the time of day and the timestamp. In PHP I'd just use mktime to create a new date, based on the start of the day (i.e. <code>mktime(0,0,0)</code>), but I'm not sure of the easiest way to do that in Swift.</p>

<p>Does anybody have a good idea on how to approach this? Perhaps an extension to NSDate or something similar would be best?</p>