эпоха конвертировать JSON INT (Unix Timestamp) в удобочитаемую дату в Swift - PullRequest
0 голосов
/ 11 декабря 2018

Я создаю приложение погоды на основе API OpenWeatherMap в Swift.

Я получаю местное время с помощью метки времени Unix в виде Int и хочу преобразовать его в понятный человеку формат.

Я могу преобразовать текущее время (устройства) в читаемый формат, но не в значение int.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Поскольку вы используете Codable, это довольно просто

  • Объявите все элементы структуры, связанные с датами (dt, sunrise, sunset), как Date

    let dt : Date
    
  • Добавьте соответствующую стратегию декодирования даты в декодер

    let decoder = JSONDecoder()
    decoder.dateDecodingStrategy = .secondsSince1970
    
  • Используйте DateFormatter, чтобы получить, например, читаемую человеком строку

    let formatter = DateFormatter()
    formatter.setLocalizedDateFormatFromTemplate("yyyyMMMddHHmmss")
    let dateString = formatter.string(from: dt)
    
0 голосов
/ 11 декабря 2018

Временные метки Unix обычно равны либо секундам, либо миллисекундам с полуночи 1 января 1970 года.

Довольно просто преобразовать какао Date в миллисекунды Unix:

let unixMilliseconds: Int = Int(Date().timeIntervalSince1970 * 1000)
print(unixMilliseconds)

Или,если у вас есть метка времени Unix:

let date = Date.init(timeIntervalSince1970: Double(unixMilliseconds/1000))
print(DateFormatter.localizedString(from: date, dateStyle: .medium, timeStyle: .medium))

(Если вы имеете дело с секундами, вы можете просто получить значения *1000 и /1000 в приведенном выше коде. Или использовать JSON-декодер, как описанов отличном ответе Вадиана.)

...