Próbuję ustalić, jak zdecydować, czy dany znacznik czasu występuje dzisiaj, czy +1/-1 dni. Zasadniczo chciałbym zrobić coś takiego (pseudokod)Swift - sprawdź, czy znacznik czasu jest wczoraj, dziś, jutro lub X dni temu
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'
Co najważniejsze jednak, że musi być w Swift i mam zmaga się z obiektami NSDate/NSCalendar. Zacząłem pracować na różnicę czasu tak:
let calendar = NSCalendar.currentCalendar()
let date = NSDate(timeIntervalSince1970: Double(timestamp))
let timeDifference = calendar.components([.Second,.Minute,.Day,.Hour],
fromDate: date, toDate: NSDate(), options: NSCalendarOptions())
Jednak porównując w ten sposób nie jest łatwe, ponieważ .Day
różni się w zależności od pory dnia i datownik. W PHP używałbym mktime do stworzenia nowej daty, w oparciu o początek dnia (tj. mktime(0,0,0)
), ale nie jestem pewien najprostszego sposobu, aby to zrobić w Swift.
Czy ktoś ma dobry pomysł, jak się do tego podejść? Być może rozszerzenie do NSDate lub coś podobnego byłoby najlepsze?
Dziękujemy! Górna część wygląda idealnie. Z dolną częścią może być tu 10 rano, ale znacznik czasu może być jutro o 9 rano, co dałoby inny wynik, gdyby było jutro o 11 rano. A może źle zrozumiałem, jak to działa? – Ben
Świetne rzeczy, jeszcze raz dziękuję. Jedyną zmianą, jaką wprowadziłem, była linia dni, dodając "abs", aby usunąć negację, tj. 'Return" \ (abs (dzień)) dni temu "' – Ben
Oczywiście, dzięki :-) – vadian