如何快速将字符串转换为日期并再次转换为日期?

时间:2020-04-19 08:25:31

标签: ios swift

我从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)

}

2 个答案:

答案 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

}