Swift 字符串值转换为奇怪的日期值
Swift String value converted into strange Date value
extension Date {
func toString() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM dd, Y (E)"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
return dateFormatter.string(from: self)
}
}
extension String {
func toDate() -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM dd, Y (E)"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
return dateFormatter.date(from: self)!
}
}
那是我的代码。
我想将我的字符串值转换为正确的日期值。我得到的结果与我想要的完全不同。
这是一个例子:
String : September 09, 2021 (Thu)
Converted Date : 2020-12-24 00:00:00 +0000
我希望它是这样的:
Converted Date : September 09, 2021 (Thu) (or 2021-09-09 00:00:00 +0000)
你能改变吗
dateFormatter.dateFormat = "MMMM dd, Y (E)"
收件人:
dateFormatter.dateFormat = "MMMM dd, yyyy (E)"
您在字符串中传递了全年:2021 年 9 月 9 日(星期四),因此您需要以正确的方式获取 yyyy。
extension String {
func toDate() -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM dd, yyyy (E)"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
return dateFormatter.date(from: self)!
}
}
在这里你可以为所欲为:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM dd,yyyy (E)" // here is your foramt
dateFormatter.timeZone = TimeZone(identifier: "UTC")
guard let date = dateFormatter.date(from: "September 09, 2021 (Thu)") else {
fatalError()
}
print(date) // output: 2021-09-09 00:00:00 +0000
请注意,您选择的时区应与您的设备时区相匹配。
用以下代码替换您的函数
extension Date {
func toString() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM dd, yyyy (E)"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
return dateFormatter.string(from: self)
}
}
extension String {
func toDate() -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM dd,yyyy (E)"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
return dateFormatter.date(from: self)!
}
}
您的 dateFormat
与您的 toDate()
函数
略有不同
- 已从 MMMM
替换为 MMM
- 已从 Y
替换为 yyyy
我不知道为什么显示不同的日期,但现在应该可以了
extension Date {
func toString() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM dd, Y (E)"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
return dateFormatter.string(from: self)
}
}
extension String {
func toDate() -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM dd, Y (E)"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
return dateFormatter.date(from: self)!
}
}
那是我的代码。 我想将我的字符串值转换为正确的日期值。我得到的结果与我想要的完全不同。
这是一个例子:
String : September 09, 2021 (Thu)
Converted Date : 2020-12-24 00:00:00 +0000
我希望它是这样的:
Converted Date : September 09, 2021 (Thu) (or 2021-09-09 00:00:00 +0000)
你能改变吗
dateFormatter.dateFormat = "MMMM dd, Y (E)"
收件人:
dateFormatter.dateFormat = "MMMM dd, yyyy (E)"
您在字符串中传递了全年:2021 年 9 月 9 日(星期四),因此您需要以正确的方式获取 yyyy。
extension String {
func toDate() -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM dd, yyyy (E)"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
return dateFormatter.date(from: self)!
}
}
在这里你可以为所欲为:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM dd,yyyy (E)" // here is your foramt
dateFormatter.timeZone = TimeZone(identifier: "UTC")
guard let date = dateFormatter.date(from: "September 09, 2021 (Thu)") else {
fatalError()
}
print(date) // output: 2021-09-09 00:00:00 +0000
请注意,您选择的时区应与您的设备时区相匹配。
用以下代码替换您的函数
extension Date {
func toString() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM dd, yyyy (E)"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
return dateFormatter.string(from: self)
}
}
extension String {
func toDate() -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM dd,yyyy (E)"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
return dateFormatter.date(from: self)!
}
}
您的 dateFormat
与您的 toDate()
函数
- 已从 MMMM 替换为 MMM
- 已从 Y 替换为 yyyy
我不知道为什么显示不同的日期,但现在应该可以了