Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在swift中将sting转换为日期,然后再转换为日期?_Ios_Swift - Fatal编程技术网

Ios 如何在swift中将sting转换为日期,然后再转换为日期?

Ios 如何在swift中将sting转换为日期,然后再转换为日期?,ios,swift,Ios,Swift,我从一个JSON请求中收到一个时间戳,我想将它格式化为一种用户友好的格式。输入和所需输出均为“字符串”类型 输入时间戳的格式为:2020-03-07T12:18:26.347Z 使用以下代码,我尝试将其转换为所需的格式。但是它只输出Date()的值,这表明formatter.Date(from:Date)的输出是nil 我错过了什么 func convertDate(date: String) -> String { let formatter = DateFormatter()

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

}

日期格式与输入字符串的格式不匹配。你想要的是:

formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

经过几个小时的努力,这个,再加上找到的日期格式信息,我找到了答案。我之前没有向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

}