我正在尝试从Firebase读取timeStamp并将其附加到数组。
我已经取得了一些进展:
var orderDateHistoryArray = [String:Int]()
func getOrderDates() {
let uid = Auth.auth().currentUser!.uid
let orderDateHistoryRef = Database.database().reference().child("users/\(uid)/Orders/")
orderDateHistoryRef.observeSingleEvent(of: .value, with: { (snapshot) in
// Get dates
let value = snapshot.value as? NSDictionary
if let orderDate = value?["Date"] as? [String:Int] {
self.orderDateHistoryArray += Array(orderDate.values)//This does not conform
print(orderDate)
}
self.tableView.reloadData()
// ...
}) { (error) in
print(error.localizedDescription)
}
}
print(orderDate)
声明打印:
[“-LQYspEghK3KE27MlFNE”:1541421618601,
“ -LQsYbhf-vl-NnRLTHhK”:1541768379422,
“ -LQYDWAKlzTrlTtO1Qiz”:1541410526186,
“ -LQsILjpNqKwLl9XBcQm”:1541764115618]
这是childByAutoID
:timeInMilliseconds
因此,我想读出timeInMilliseconds
,将其转换为可读的timestamp
,并将其附加到orderDateHistoryArray
答案 0 :(得分:0)
这些是时间戳。将其解析为Date对象,然后使用.toLocaleDateString获取日期。
alert( new Date(1541421618601).toLocaleDateString("en-US") );
答案 1 :(得分:0)
要转换timestamp
,必须先对字典返回的每个值都删除毫秒。
self.orderDateHistoryArray += Array(orderDate.values).map { Date(timeIntervalSince1970: TimeInterval($0/1000)) }
为了以“人工方式”获得它,您需要具有DateFormatter
。在该对象上,您可以定义其显示方式。
extension Date {
func format(_ dateFormat: String = "dd/MMMM")
let formatter = DateFormatter()
formatter.timeZone = TimeZone.current
formatter.dateFormat = "MMMM dd"
return formatter.string(from: self)
}
}
在Date
元素上,您可以通过date.format()
或通过传递字符串date.format("yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX")