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

Я новое программирование iOS.Я создаю простой, который интегрируется с FirestoreFirestore я создал коллекцию, и каждый документ содержит много полей.

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

Вот как Timestamp в Firestore выглядит так:

September 17, 2018 at 3:37:43 PM UTC+7

Итак, как мне написать программу и получить текущую Timestamp, как показано в Firestore

Это в программировании:

struct RecentCallModel {

var call_answered: Bool?
var call_extension: String?
var call_type: String?
var details: String?
var duration:  String?
var title: String?
// How can i declare as Timestamp
var timestamp: ???

init(call_answered: Bool, call_extension: String, call_type: String, details: String , duration: String, timestamp: String,  title: String) {

    self.call_answered = call_answered
    self.call_extension = call_extension
    self.call_type = call_type
    self.details = details
    self.title = title
 }


}

Ответы [ 3 ]

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

Не уверен, что ваш вопрос явно подразумевает, но вы обычно объявляете значение метки времени как Double, что-то вроде var timestamp: Double.Полученные данные будут выглядеть примерно так: 1537187800, и их можно преобразовать в фактическую дату и / или время, используя следующий вспомогательный класс

class DateAndTimeHelper {

static func convert(timestamp: Double, toDateFormat dateFormat: String) -> String {

        let date = Date(timeIntervalSince1970: timestamp)
        let dateFormatter = DateFormatter()
            dateFormatter.timeZone = NSTimeZone.local
            dateFormatter.locale = NSLocale.current
            dateFormatter.dateFormat = dateFormat

        return dateFormatter.string(from: date)

    }

}

, который можно использовать с использованием следующего синтаксиса

var timestamp: Double = 0.0

// Perform some database querying action in order to retrieve the actual timestamp value from the server
DateAndTimeHelper.convert(timestamp: timestamp, toDateFormat: DATE_FORMAT)

Обратите внимание, что вы должны заменить DATE_FORMAT форматом, которому вы хотите следовать.Хороший справочник доступных форматов можно найти здесь .

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

Это метод, как мы можем получить текущую дату и время в кратчайшие сроки. и вы также можете объявить отметку времени как Double, но я не уверен

// get the current date and time
let currentDateTime = Date()

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

// get the date time String from the date object
formatter.string(from: currentDateTime) 
0 голосов
/ 17 сентября 2018

Не знаком с Firebase.Но обычно в iOS мы храним метки времени как TimeInterval, которые являются псевдонимами типа для Double.

class func getDateOnly(fromTimeStamp timestamp: TimeInterval) -> String { 
  let dayTimePeriodFormatter = DateFormatter()
  dayTimePeriodFormatter.timeZone = TimeZone.current 
  dayTimePeriodFormatter.dateFormat = "MMMM dd, yyyy - h:mm:ss a z" 
  return dayTimePeriodFormatter.string(from: Date(timeIntervalSince1970: timestamp)) 
} 
...