Firebaseでタイムスタンプを保持するとき、ServerValue.timestamp()を使います。こういう状況ですね。
1 |
let hello:[String: Any] = ["test": "Hello!","createdAt": ServerValue.timestamp()] |
すると、createdAtの中には「1495779479579」とかいうunix timestampが保存されます。
それを以下のメソッドに投げるとyyyy.MM.dd hh:mmフォーマットの日付に変換されます。
ポイントはtimestampを1000で割ってからNSDateに変更するところです。これをやらないと正しく表示されません。私もハマりました。
1 2 3 4 5 6 7 8 9 |
func getStrDate(unixtimeInterval: TimeInterval) -> String { let date = NSDate(timeIntervalSince1970: unixtimeInterval/1000) let dateFormatter = DateFormatter() dateFormatter.timeZone = TimeZone.current dateFormatter.locale = NSLocale.current dateFormatter.dateFormat = "yyyy.MM.dd hh:mm" return dateFormatter.string(from: date as Date) } |
参考にしたページ:
https://stackoverflow.com/questions/29243060/trying-to-convert-firebase-timestamp-to-nsdate-in-swift