Как разместить данные в Firestore как тип данных Timestamp - swift - PullRequest
0 голосов
/ 17 сентября 2018

Интересно, как я могу разместить данные от String до Firestore как Timestamp. Я создаю пример приложения, в котором данные хранятся на tableView, а данные будут сортироваться на основе Timestamp.

Итак, в программировании я пытался получить текущее время и дату как String, но я не знаю, как установить данные в Firestore, так как поле равно Timestamp. Когда я запрашиваю данные у Firestore, я хочу отсортировать базу данных по Timestamp.

let currentDateTime = Date()

// initialize the date formatter and set the style
let formatter = DateFormatter()
formatter.timeStyle = .long
formatter.dateStyle = .long

// get the date time String from the date object
formatter.string(from: currentDateTime)

Timestamp в Firestore содержит дату и время. Как я могу опубликовать данные от String до Firestore как Timestamp?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Почему вы хотите опубликовать его как String?Вот мой подход с Int вместо

let timestamp = Int(Date().timeIntervalSince1970) // gives you an Int like 1534840591

Затем, когда вы анализируете его из Firebase, передайте его в func как-то так, чтобы преобразовать это Int отметка времени в дате:

 func timestampIntToString(integerTime: Int, timestampLabel: UILabel) {
    let timestampDate = Date(timeIntervalSince1970: Double(integerTime))
    let now = Date()
    let components = Set<Calendar.Component>([.second, .minute, .hour, .day, .weekOfMonth])
    let difference = Calendar.current.dateComponents(components, from: timestampDate, to: now)
    var timeText = ""

    if difference.second! <= 0 {
        timeText = "now"
    }
    if difference.second! > 0 && difference.minute! == 0 {
        timeText =  "\(difference.second!) sec ago"
    }
    if difference.minute! > 0 && difference.hour! == 0 {
        timeText =  "\(difference.minute!) min"
    }
    if difference.hour! > 0 && difference.day! == 0 {
        timeText =  "\(difference.hour!)h"
    }
    if difference.day! > 0 && difference.weekOfMonth! == 0 {
        timeText =  (difference.day == 1) ? "\(difference.day!)day" : "\(difference.day!) days ago"
    }
    if difference.weekOfMonth! > 0 {
        timeText =  (difference.weekOfMonth == 1) ? "\(difference.weekOfMonth!) w" : "\(difference.weekOfMonth!)w"
    }

    timestampLabel.text = timeText
}
0 голосов
/ 17 сентября 2018

Если я правильно понимаю, вы хотите сохранить файл с отметкой времени или датой в Firestore?

Кажется, вы делаете отметку времени буквально как дата, гораздо проще было бы сохранить еетаким образом, как отметка времени, так как это будет просто число, которое будет заказано в Firestore.

   let timestamp = Int(NSDate.timeIntervalSinceReferenceDate*1000).description

Ссылка на изображение: это будет конечный результат

...