如何在Swift中将字符串转换为日期到字符串?
How to convert String to Date to String in Swift?
我有这种类型的字符串,“2019-03-22”,我想将它转换成这种字符串,"March 22, 2019",在 Swift.
看起来很简单,我尝试了几种不同的方法。但是我还没想好。
我拥有的最好的代码是这样的:
let originalDate = "2019-03-22"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM dd, yyyy"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let newDate = dateFormatter.string(from:originalDate)!
print(newDate)
但是我得到这个错误Cannot convert value of type 'String' to expected argument type 'Date'
我该如何解决这个问题?
您正在尝试转换 string(from: string
,这是不可能的。
您必须先将字符串转换为 日期,格式为 yyyy-MM-dd
,然后更改格式并将其转换回字符串。
let dateString = "2019-03-22"
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = dateFormatter.date(from: dateString)!
dateFormatter.dateFormat = "MMMM dd, yyyy"
let newDate = dateFormatter.string(from:date)
print(newDate)
您需要阅读提供的日期字符串。
dateFormatter.dateFormat = "yyyy-MM-dd"
现在读取日期字符串。
let aDate = dateFormatter.date(from: originalDate)
然后你提供新的格式
dateFormatter.dateFormat = "MMMM dd, yyyy"
let newDateString = dateFormat.string(from: aDate)
现在输出是:
March 22, 2019
完整代码:
let originalDate = "2019-03-22"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let aDate = dateFormatter.date(from: originalDate)!
dateFormatter.dateFormat = "MMMM dd, yyyy"
let newDate = dateFormatter.string(from: aDate)
print(newDate)
我已经在我的项目中使用了以下方法:
func dateFormat(_ originalDate: String) -> String{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let date = dateFormatter.date(from: originalDate)
dateFormatter.dateFormat = "MMMM dd, yyyy"
let valueDate = dateFormatter.string(from: date!)
return valueDate
}
你可以使用这样的方法:
dateFormat("2019-03-22") // March 22, 2019
我有这种类型的字符串,“2019-03-22”,我想将它转换成这种字符串,"March 22, 2019",在 Swift.
看起来很简单,我尝试了几种不同的方法。但是我还没想好。
我拥有的最好的代码是这样的:
let originalDate = "2019-03-22"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM dd, yyyy"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let newDate = dateFormatter.string(from:originalDate)!
print(newDate)
但是我得到这个错误Cannot convert value of type 'String' to expected argument type 'Date'
我该如何解决这个问题?
您正在尝试转换 string(from: string
,这是不可能的。
您必须先将字符串转换为 日期,格式为 yyyy-MM-dd
,然后更改格式并将其转换回字符串。
let dateString = "2019-03-22"
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = dateFormatter.date(from: dateString)!
dateFormatter.dateFormat = "MMMM dd, yyyy"
let newDate = dateFormatter.string(from:date)
print(newDate)
您需要阅读提供的日期字符串。
dateFormatter.dateFormat = "yyyy-MM-dd"
现在读取日期字符串。
let aDate = dateFormatter.date(from: originalDate)
然后你提供新的格式
dateFormatter.dateFormat = "MMMM dd, yyyy"
let newDateString = dateFormat.string(from: aDate)
现在输出是:
March 22, 2019
完整代码:
let originalDate = "2019-03-22"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let aDate = dateFormatter.date(from: originalDate)!
dateFormatter.dateFormat = "MMMM dd, yyyy"
let newDate = dateFormatter.string(from: aDate)
print(newDate)
我已经在我的项目中使用了以下方法:
func dateFormat(_ originalDate: String) -> String{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let date = dateFormatter.date(from: originalDate)
dateFormatter.dateFormat = "MMMM dd, yyyy"
let valueDate = dateFormatter.string(from: date!)
return valueDate
}
你可以使用这样的方法:
dateFormat("2019-03-22") // March 22, 2019