如何从 swift 中的 dd MMMM YYYY 更改日期格式?

How to change date format from dd MMMM YYYY in swift?

我需要将日期从 dd MMMM YYYY 转换为 dd-mm-yyyy。

例如: (2021 年 8 月 1 日) -> 01-09-2021

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "dd-MM-yyyy"
print( dateFormatter.date(from:response.data?[0].mbStartDate ?? ""))

输出为零。

我已确定响应数据值存在

如何转换?

以及如何将“01 August 2021”更改为其他语言?我的情况是将其更改为印度尼西亚语。所以它变成了“01 Agustus 2021”。这也是怎么做到的?

先致谢

使用DateFormatter是正确的做法。首先,您需要将 01 August 2021String 类型转换为 Date 对象。第二,改变dateFormat和re-format它。这是满足您两种需求的测试代码:

func convert(_ dateString: String, from initialFormat: String, to targetFormat: String? = nil, _ locale: Locale? = nil) -> String? {
    let formatter = DateFormatter()
    formatter.dateFormat = initialFormat
    guard let date = formatter.date(from: dateString) else { return nil }
    
    if let newFormat = targetFormat {
        formatter.dateFormat = targetFormat
    }
    formatter.locale = locale
    return formatter.string(from: date)
}

print(convert("01 August 2021", from: "dd MMMM yyyy", .init(identifier: "id_ID")))
print(convert("01 August 2021", from: "dd MMMM yyyy", to: "dd-MM-yyyy"))