【发布时间】:2022-01-23 23:51:54
【问题描述】:
我想将一个字符串转换为日期,然后再次返回一个字符串。 我做了这个扩展,但是当我使用它时它不能正常工作。
例如,如果我有“2020-12-10”,结果应该是“10 de Diciembre de 2020”,但我总是得到相同的结果“22 de Diciembre de 2021”,而且它不正确。
这是我的代码:
extension String {
func dateFormatter(style: DateFormatter.Style) -> String? {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
formatter.timeZone = .current
formatter.dateStyle = style
formatter.locale = Locale(identifier: "es_AR")
return formatter.string(from: Date())
}
}
let dateExample = "2022-09-08" // This should be "8 de Septiembre de 2022"
let dateFormat = dateExample.dateFormatter(style: .long) // here i get "22 de diciembre de 2021"
【问题讨论】:
-
请查看副本。您需要分两步执行此操作。首先从字符串 (
self) 中获取Date,然后在该日期使用string(from:)。 -
您将需要 2 个 DateFormatter,一个用于输入格式 (
inputDateFormatter),一个用于输出格式 (outputDateFormatter。) 首先使用inputDateFormatter从字符串转换为日期。然后使用outputDateFormatter将该日期转换为字符串 -
return formatter.string(from: Date()),它的意思很清楚:以formatter指定的格式返回一个字符串,日期为Date(),即“现在”(所以它是12 月22 日)。
标签: ios swift string date dateformatter