如何更改Swift5(ISO8601)中的日期格式?

如何更改Swift5(ISO8601)中的日期格式?,swift,dateformatter,Swift,Dateformatter,我搜索了几个小时,但只找到了这样的样本: let dateString = "2020-03-02T19:37:00.073+01:00" //get from api let dateFormatter = ISO8601DateFormatter() dateFormatter.formatOptions = [ .withTimeZone, .withInternetDateTime, .withFractionalSeconds ] print(dateFo

我搜索了几个小时,但只找到了这样的样本:


let dateString = "2020-03-02T19:37:00.073+01:00" //get from api
let dateFormatter = ISO8601DateFormatter()

dateFormatter.formatOptions = [
    .withTimeZone,
    .withInternetDateTime,
    .withFractionalSeconds
]

print(dateFormatter.date(from: dateString) ?? "no valid date")

//2020-03-02 18:37:00 +0000
我如何将此日期格式化为以下格式:


let dateString = "2020-03-02T19:37:00.073+01:00" //get from api
let dateFormatter = ISO8601DateFormatter()

dateFormatter.formatOptions = [
    .withTimeZone,
    .withInternetDateTime,
    .withFractionalSeconds
]

print(dateFormatter.date(from: dateString) ?? "no valid date")

//2020-03-02 18:37:00 +0000
2020年3月2日或2020年3月2日18:37(德语格式)

方法ISO8601DateFormatter()没有dateStyle属性

如何在标签中显示格式化的日期


谢谢

我有此参考资料,用于Salesforce的POC,他们使用以下格式:

我有一个可供使用的扩展:

extension Date {
    func salesforceFormat() -> String {
        let dateformat = DateFormatter.salesforceDateFormatter
        return dateformat.string(from: self)
    }
}

extension String {
    func fromSalesforceDateToDate() -> Date? {
        let dateformat = DateFormatter.salesforceDateFormatter
        return dateformat.date(from: self)
    }
}

extension DateFormatter {
    static var salesforceDateFormatter: DateFormatter {
        let dateformat = DateFormatter()
        dateformat.calendar = Calendar(identifier: .iso8601)
        dateformat.locale = Locale(identifier: "en_US_POSIX")
        dateformat.timeZone = TimeZone(secondsFromGMT: 0)
        dateformat.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX"
        return dateformat
    }
}
然后可以将字符串转换为日期,并将日期转换为字符串。扩展不是最好的解决方案,但可以工作,例如。

谢谢您的帮助

以下是我的解决方案:

func convertDateFormater(_ date: String) -> String
{
    let dateFormatter = ISO8601DateFormatter()
    dateFormatter.timeZone = TimeZone.current
    dateFormatter.formatOptions = [.withFractionalSeconds, .withTimeZone, .withInternetDateTime]
    let date = dateFormatter.date(from: date)

    let dateFormatter2 = DateFormatter()
    dateFormatter2.dateFormat = "dd.MM.yyyy"
    return  dateFormatter2.string(from: date!)
}


您需要的格式不是ISO8601格式。使用普通的
DateFormatter
获取它们。您正在将日期打印到控制台。您必须将该
日期
转换为
字符串
。这是否回答了您的问题?我想将中的给定日期(字符串:2020-03-02T19:37:00.073+01:00)更改为德语格式。在上面的示例中,仅格式化当前日期。我该怎么做,谢谢。对不起,我读错了,我应该帮你