преобразование формата времени и даты JSON и формата местоположения - PullRequest
0 голосов
/ 14 мая 2018

В настоящее время я получаю ответ в формате JSON с указанием часового пояса и даты в формате utc.Я хотел бы переключить его на более читаемый формат.Часовой пояс - "America / Los_Angeles" немного сложнее.Любые идеи, в частности, о том, как добраться, чтобы просто показать город?Заранее спасибо за любые указатели

Plan_it.Start(timezone: "America/Los_Angeles", utc: "2018-06-27T03:00:00Z", local: Optional("2018-06-26T20:00:00"))

Когда я печатаю их на консоль, я получаю вывод как таковой.Я хотел бы получить вывод, как - В основном мне нужно переформатировать вывод, был мой оригинальный вопрос.

(26 мая 2018 г. 10:30 и Лос-Анджелес.)

override func viewDidLoad() {
    super.viewDidLoad()

    eventNameLbl.text = detailedEvent?.name.html
    eventStartTimeLbl.text = detailedEvent?.start.local
    eventAddressLbl.text = detailedEvent?.start.timezone
    eventDescriptionLbl.text = detailedEvent?.description.text

output // Необязательно («2018-05-26T20: 30: 00»)
output // Необязательно («America / Los_Angeles»)

1 Ответ

0 голосов
/ 14 мая 2018

Вам нужно использовать DateFormatter. Сначала вам нужно проанализировать локальную строку в Date, используя предоставленный часовой пояс. Затем вы можете отформатировать эту дату по своему усмотрению.

if let dateStr = detailedEvent?.start.local, let timezone = detailedEvent?.start.timezone {
    let formatter = DateFormatter()
    formatter.locale = Locale(identifier: "en_US_POSIX")
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
    formatter.timeZone = TimeZone(identifier: timezone)
    if let date = formatter.date(from: dateStr) {
        let df = DateFormatter()
        df.setLocalizedDateFormatFromTemplate("MMMMddyyyyHHmmVVV")
        df.timeZone = TimeZone(identifier: timezone)
        let dateCity = df.string(from: date)
    }
}

Или вы можете разделить его:

if let dateStr = detailedEvent?.start.local, let timezone = detailedEvent?.start.timezone {
    let formatter = DateFormatter()
    formatter.locale = Locale(identifier: "en_US_POSIX")
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
    formatter.timeZone = TimeZone(identifier: timezone)
    if let date = formatter.date(from: dateStr) {
       let df = DateFormatter()
       df.dateStyle = .medium
       df.timeStyle = .short
       df.timeZone = TimeZone(identifier: timezone)
       let localdate = df.string(from: date)
       df.dateFormat = "VVV"
       let city = df.string(from: date)
    }
}
...