Swift - 使用日期格式化程序将日期的短格式字符串转换为长格式
Swift - Convert a short format string of a date to long format using date formatter
我有一个如下所示的字符串:“2021-08-05”
我想将其转换为日期,以便将其显示为“2021 年 8 月 5 日”
我下面的代码 returns 为 nil,我不明白为什么。任何帮助将不胜感激。
代码:
func stringToDate(dateString: String){
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd"
formatter.dateStyle = .long
let newDate = formatter.date(from: dateString)
print("formatter: \(newDate)")
}
我将函数调用为按钮 (SwiftUI) 的操作,因此当单击按钮时应该显示日期。
Button("Go"){
stringToDate(dateString: "2021-08-05")
}
删除 dateStyle
行修复它,并打印实际日期。
代码:
func stringToDate(dateString: String){
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd"
let newDate = formatter.date(from: dateString)
print("formatter: \(newDate)")
}
// Prints: formatter: Optional(2021-08-04 23:00:00 +0000)
要完成整个转换,将使用以下函数:
func convertDate(from original: String) -> String? {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd"
guard let date = formatter.date(from: original) else { return nil }
formatter.dateStyle = .long
let string = formatter.string(from: date)
return string
}
// Prints: Optional("August 5, 2021")
当然,由于我所在的位置和语言,这可能会略有不同
下面的代码行 只能 运行 在 得到 Date
之后 Date
否则你是 'overwriting' dateFormat
:
formatter.dateStyle = .long
您正在使用 .dateStyle
设置覆盖 .dateFotrmat
设置。
如果你想这样做,使用格式字符串将字符串转换为日期,然后使用样式输出它。
func stringToDate(dateString: String){
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd"
let newDate = formatter.date(from: dateString)
formatter.dateStyle = .long
print("formatter: \(formatter.string(from: newDate!) )")
}
它给出了你想要的输出:
formatter: August 5, 2021
我有一个如下所示的字符串:“2021-08-05”
我想将其转换为日期,以便将其显示为“2021 年 8 月 5 日”
我下面的代码 returns 为 nil,我不明白为什么。任何帮助将不胜感激。
代码:
func stringToDate(dateString: String){
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd"
formatter.dateStyle = .long
let newDate = formatter.date(from: dateString)
print("formatter: \(newDate)")
}
我将函数调用为按钮 (SwiftUI) 的操作,因此当单击按钮时应该显示日期。
Button("Go"){
stringToDate(dateString: "2021-08-05")
}
删除 dateStyle
行修复它,并打印实际日期。
代码:
func stringToDate(dateString: String){
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd"
let newDate = formatter.date(from: dateString)
print("formatter: \(newDate)")
}
// Prints: formatter: Optional(2021-08-04 23:00:00 +0000)
要完成整个转换,将使用以下函数:
func convertDate(from original: String) -> String? {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd"
guard let date = formatter.date(from: original) else { return nil }
formatter.dateStyle = .long
let string = formatter.string(from: date)
return string
}
// Prints: Optional("August 5, 2021")
当然,由于我所在的位置和语言,这可能会略有不同
下面的代码行 只能 运行 在 得到 Date
之后 Date
否则你是 'overwriting' dateFormat
:
formatter.dateStyle = .long
您正在使用 .dateStyle
设置覆盖 .dateFotrmat
设置。
如果你想这样做,使用格式字符串将字符串转换为日期,然后使用样式输出它。
func stringToDate(dateString: String){
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd"
let newDate = formatter.date(from: dateString)
formatter.dateStyle = .long
print("formatter: \(formatter.string(from: newDate!) )")
}
它给出了你想要的输出:
formatter: August 5, 2021