转换 JSON 时间和日期格式和位置格式
converting JSON time and date format and location format
我目前收到 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"))
当我将这些打印到控制台时,我得到了这样的输出。我想得到这样的输出 - 基本上我需要重新格式化输出,这是我最初的问题。
(2018 年 5 月 26 日 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//Optional("2018-05-26T20:30:00")
output//Optional("America/Los_Angeles")
您需要使用 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)
}
}
我目前收到 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"))
当我将这些打印到控制台时,我得到了这样的输出。我想得到这样的输出 - 基本上我需要重新格式化输出,这是我最初的问题。
(2018 年 5 月 26 日 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//Optional("2018-05-26T20:30:00")
output//Optional("America/Los_Angeles")
您需要使用 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)
}
}