Я пытаюсь решить, как решить, существует ли данная временная метка сегодня, или +1 / -1 дней. По сути, я хотел бы сделать что-то вроде этого (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'
Тем не менее, важно, чтобы это было в Swift, и я борюсь с объектами NSDate/NSCalendar. Я начал с разработки разницы во времени следующим образом:
let calendar = NSCalendar.currentCalendar()
let date = NSDate(timeIntervalSince1970: Double(timestamp))
let timeDifference = calendar.components([.Second,.Minute,.Day,.Hour],
fromDate: date, toDate: NSDate(), options: NSCalendarOptions())
Однако сравнивать это непросто, потому что .Day
отличается в зависимости от времени суток и временной метки. В PHP я просто использовал mktime для создания новой даты, основанной на начале дня (например, mktime(0,0,0)
), но я не уверен в том, что это самый простой способ сделать это в Swift.
У кого-нибудь есть хорошая идея о том, как подойти к этому? Может быть, расширение NSDate или что-то подобное было бы лучше?