Wie Tom Harringtons Antwort feststellt, können Sie eine umgangssprachliche Darstellung eines Moments oder eines Zeitintervalls mit NSDateComponentsFormatter
erstellen.
Wenn Sie jedoch wollen genau das tun, was die Frage in seinem Beispiel fragt, die eine umgangs Darstellung eines Moments in der Vergangenheit in Bezug auf den gegenwärtigen Moment zu erzeugen, ist, wie für eine Timeline-orientierte Benutzeroberfläche, dann scheint es wie NSDateComponentsFormatter
ist nicht geeignet. Wie die Dokumentation für stringFromTimeInterval(_:)
sagt, muss der Zeitintervallwert "eine endliche Zahl sein. Negative Zahlen werden als positive Zahlen behandelt, wenn die Zeichenfolge erzeugt wird."
So nah wie ich sagen kann, ist die beste Wahl TTTTimeIntervalFormatter
, eine eigenständige Klasse in Mattt Thompson FormatterKit.
Ich habe einen Xcode 7 Spielplatz, produziert, der die Ausgaben von NSDateFormatter
Ausgang mit TTTTimeIntervalFormatter
vergleicht. Hier ist eine Tabelle, die die Ausgabe für verschiedene relative Zeiten in Sekunden zeigt. Wie Sie sehen können, scheint NSDateComponentsFormatter
nicht in der Vergangenheit Momente oder den gegenwärtigen Moment gut zu handhaben:
aus
-1488010 | 2 weeks ago | -1 week remaining
-1468800 | 2 weeks ago | -1 week remaining
-864000 | 1 week ago | 0 seconds remaining
-86400 | 1 day ago | -1 day remaining
-36000 | 10 hours ago | -10 hours remaining
-3600 | 1 hour ago | -1 hour remaining
-600 | 10 minutes ago | -10 minutes remaining
-60 | 1 minute ago | -1 minute remaining
-10 | 10 seconds ago | -10 seconds remaining
-1 | 1 second ago | -1 second remaining
-0 | just now | 0 seconds remaining
0 | just now | 0 seconds remaining
1 | 1 second from now | 1 second remaining
10 | 10 seconds from now | 10 seconds remaining
60 | 1 minute from now | 1 minute remaining
600 | 10 minutes from now | 10 minutes remaining
3600 | 1 hour from now | 1 hour remaining
36000 | 10 hours from now | 10 hours remaining
86400 | 1 day from now | 1 day remaining
864000 | 1 week from now | 1 week remaining
1468800 | 2 weeks from now | 2 weeks remaining
1488010 | 2 weeks from now | 2 weeks remaining
überprüfen https://github.com/kevinlawler/NSDate-TimeAgo oder http: // Stackoverflow.com/questions/902950/iphone-convert-date-zeichenfolge-zu-einer-relativen-zeitstempel. – jtbandes
versuchen Sie https://github.com/quire-io/SwiftyChrono, es ist sogar leistungsfähiger als gerade Muster und in Swift geschrieben. –