1

Benachrichtigungen auf iOS zeigen, wie lange sie da:Wie kann ich eine Benachrichtigungs-ähnliche Zeit vor Strings in iOS generieren? Vor

  • "jetzt"
  • "5m vor"
  • "Vor 1d"

Gibt es eine native Möglichkeit, diese Zeichenfolgen zu erzeugen in einem i18n freundlichen Weg? (Anmerkung: „m“ ist nicht „Minuten“)

Ich weiß, über Bibliotheken wie YLMoment aber keine scheinen diese kurz Grammatiken zu unterstützen.

+0

Haben Sie http://StackOverflow.com/Questions/8614543/How-Can-i-Format-two-nsdate-as-a-time-difference-string-eg-2days-ago-and-mak? rq = 1? – Lasse

+0

Danke @Lasse, ich habe es aber anscheinend nicht geholfen, etwas Ähnliches wie die Benachrichtigungszeiten vor Strings zu erzeugen. – Warpling

Antwort

2

Sie sollten sich mit NSDateComponentsFormatter befassen. Zum Beispiel:

let formatter = NSDateComponentsFormatter() 
formatter.unitsStyle = .Abbreviated 
formatter.includesApproximationPhrase = true 
formatter.allowedUnits = [.Minute] 
formatter.maximumUnitCount = 1 

let oldDate = NSDate(timeIntervalSinceNow: -60*60) 

print(formatter.stringFromDate(oldDate, toDate: NSDate())) 

Wird gedruckt „Über 60m“ es nicht „vor“ nicht bieten, wenn auch nicht sicher, ob das, was Sie wirklich nach sind.

+0

Du hast vollkommen Recht mit dem 'abgekürzten' Einheitenstil, und dass 'maximumUnitCount' etwas war, was ich vermisste, was mich sehr nahe bringt! Ich kann nun lokalisierte Strings wie "-10m" "-4h" erzeugen! Leider scheint es [das SDK hat möglicherweise keine Möglichkeit, diese negativen Zeichenfolgen zu formatieren, um noch "vor" zu verwenden] (http://www.openradar.appspot.com/17436956) ... – Warpling

+0

Für den Datensatz wird 'includesTimeRemainingPhrase' transformieren" -10m "in" -10m verbleibend " – Warpling