Я пытаюсь решить, как решить, существует ли данная временная метка сегодня или +1/-1 дней. По сути, я хотел бы сделать что-то вроде этого (псевдокод)Swift - проверьте, есть ли временная метка вчера, сегодня, завтра или X дней назад
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 или что-то подобное было бы лучше?
Спасибо! Верхняя часть выглядит идеально. С нижней частью это может быть 10 утра здесь, но отметка времени может быть завтра 9 утра, что даст другой результат, если завтра 11 утра. Или я неправильно понял, как это работает? – Ben
Отличный материал, спасибо еще раз. Единственное изменение, которое я сделал, это линия дней назад, добавив 'abs' для удаления отрицания, то есть' return '\ (abs (day)) дней назад »' – Ben
Конечно, спасибо :-) – vadian