1

通知は、彼らが到着したどのくらい前に示しています iOSで通知文字のような時間の文字列を生成するにはどうすればよいですか? iOSの

があり

  • "今"
  • "5メートル前"
  • "1D前に"これらの文字列を生成するネイティブな方法i18n フレンドリーな方法? (注:「M」「分」ではありません)

    私はYLMomentのようなライブラリを知っているが、どれもこれら短い文法をサポートするように見えるん。

+0

あなたは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

ありがとう@Lasse、私はしましたが、通知時間の前の文字列に似た何かを生成するのに役立つようではありません。 – Warpling

答えて

2

あなたはNSDateComponentsFormatterを使用してになります。例:

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())) 

「約60m」と印刷されますが、実際にはそれが実際のものかどうかはわかりませんが、「前回」は表示されません。

+0

あなたは 'Abbreviated'ユニットスタイルで完全に正しいですし、' maximumUnitCount'は私が見逃していたものでした。ローカライズされた方法で "-10m" "-4h"のような文字列を生成できるようになりました!残念ながら、それは[SDKは、まだ「前」を使用するには、これらの負の文字列をフォーマットする方法を持っていないかもしれません]と思われる(http://www.openradar.appspot.com/17436956)...レコードの – Warpling

+0

は、 'includesTimeRemainingPhrase'は「変えていきます-10m "から" -10m remaining " – Warpling

関連する問題