Come nota di risposta di Tom Harrington, è possibile produrre una rappresentazione colloquiale di un momento o un intervallo di tempo utilizzando NSDateComponentsFormatter
.
Tuttavia, se si vuole fare esattamente ciò che la domanda chiede nel suo esempio, che è quello di produrre una rappresentazione colloquiale di un momento nel passato, rispetto al momento presente, come per una timeline-oriented interfaccia utente, quindi sembra che NSDateComponentsFormatter
non sia adatto. Come dice la documentazione di stringFromTimeInterval(_:)
, il valore dell'intervallo di tempo "deve essere un numero finito. I numeri negativi vengono considerati come numeri positivi quando si crea la stringa".
Per quanto posso dire, la scelta migliore è TTTTimeIntervalFormatter
, una classe autonoma in Mattdi Mattt Thompson.
Ho prodotto un parco giochi Xcode 7, RelativeDatePlayground, che confronta le uscite di NSDateFormatter
in TTTTimeIntervalFormatter
. Ecco una tabella che mostra l'output per diversi tempi relativi in secondi. Come si può vedere, NSDateComponentsFormatter
non sembra per gestire momenti passati o il momento presente così:
-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
Partenza https://github.com/kevinlawler/NSDate-TimeAgo o http: // StackOverflow.com/domande/902.950/iphone-convertire-Data-string-to-a-parente-time-stamp. – jtbandes
prova https://github.com/quire-io/SwiftyChrono, è persino più potente del modello precedente e scritto in Swift. –