我从JSON请求收到时间戳,我想将其格式化为用户友好的格式。作为期望的输出,两个输入均为“字符串”类型。
输入时间戳的格式为:2020-03-07T12:18:26.347Z
使用以下代码,我尝试将其转换为所需的格式。但是它将仅输出Date()
的值,表明formatter.date(from: date)
的输出为nil
。
我想念什么?
func convertDate(date: String) -> String {
let formatter = DateFormatter()
formatter.dateFormat = "d-M-y, HH:mm"
let convertedDate = formatter.date(from: date) ?? Date()
return formatter.string(from: convertedDate)
}
答案 0 :(得分:1)
您的dateFormat与您输入的字符串的格式不匹配。您想要类似的东西:
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
答案 1 :(得分:0)
经过数小时的努力之后,我发现了这个answer以及找到的日期格式信息here。之前我没有向dateformatter描述输入字符串的外观。
func convertDate(date: String) -> String {
let dateFormatter = DateFormatter()
// This is important - we set our input date format to match our input string
// if the format doesn't match you'll get nil from your string, so be careful
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
//`date(from:)` returns an optional so make sure you unwrap when using.
let dateFromString: Date? = dateFormatter.date(from: date)
let formatter = DateFormatter()
formatter.dateFormat = "dd-MM-yyyy, HH:mm"
//Using the dateFromString variable from before.
let stringDate: String = formatter.string(from: dateFromString!)
return stringDate
}