2017-07-08 3 views
-3

現在のタイムスタンプとタイムスタンプを使用して、ページにそれらを表示する最も良い方法は何ですか?与えられたタイムスタンプが「昨日」を表す場合、プレゼンテーションは昨日に言わなければなりません。指定されたタイムスタンプが数分または数時間前だった場合は、そのタイムスタンプの数だけを含める必要があります。 1つを他のものから減算して、その違いが何を意味するのか、または使用できる組み込みのライブラリやフレームワークがあるのか​​を評価するのが最善でしょうか?これまでのところ、私は以下の遊び場で働いています:SwiftでUnixタイムスタンプを表示

let ts = 1499299978.149724 
    let current_ts: Double 

    let date = NSDate(timeIntervalSince1970: ts) 

    let dayTimePeriodFormatter = DateFormatter() 

    let totalFormat = "MMM dd YYYY hh:mm a" //just for reference 
    dayTimePeriodFormatter.dateFormat = "hh:mm a" //add to this as desired 

    let dateString = dayTimePeriodFormatter.string(from: date as Date) 
+0

あなたの質問は、2つの 'Date'インスタンス間の違いをフォーマットするように思えますか?タイトルを適宜編集してください。あなたの質問はUnixのタイムスタンプとは関係ありません。なぜ、 'Date'ではなく' NSDate'を使うのですか? – rmaddy

+0

そしてあなたの質問を、あなたが望む出力のタイプの特定の例で更新してください。あなたの説明は非常に曖昧です。 – rmaddy

答えて

-2

これは取得する必要があなたが開始しました:

let midnight = startOfToday.timeIntervalSince1970 
    let secondsInADay = 86400.0 

    if ts > midnight { 
     print ("today") 
     code 
    } else if ts > midnight - secondsInADay { 
     print ("yesterday") 
     code 
    } else if ts > midnight - secondsInADay - secondsInADay { 
     print ("2 days ago") 
     code 
    } else if ts > midnight - secondsInADay * 3 { 
     print ("3 days ago") 
     code 
    } 

を「今日」ブロック内で、あなたは数分前に、秒前にチェックするために同様のプロセスを使用することができますそれ以外の場合は、現在のTSからTSを減算し、必要な数に応じて60で割ります。

+3

1日の期間として86400秒を使用しないでください。時計が夏時間に合わせて調整されている場合、1日に23時間または25時間かかることがあります。 –

+1

'startOfToday'とは何ですか? FYI - このアプローチは使用しないでください。適切な 'Calendar'メソッドを使用してください。 – rmaddy

+0

これを使用せずに他のものを使用しますか?適切な何か。実際には批判だけに答えるつもりはない。私はそれを使用し、それは動作します。 – Sudacris

関連する問題