Swift 使用 dateFormat 将日期转换为日期
Swift Convert Date to Date with dateFormat
我知道皈依者
日期到字符串 //
迄今为止的字符串
和
let formatter = DateFormatter()
formatter.dateFormat = "yyyy MM dd"
let date = formatter.date ( from: String )
或
let string = formatter.string ( from: Date )
但我想将日期转换为格式如下的日期
"yyyy-MM-dd'T'HH:mm:ssZ" 到 "yyyy-MM-dd" 日期格式。
有没有办法用一行做到这一点?
Answer to your question: No.
您可以创建一个 date/string 扩展程序,它可以在线解决您的问题。注意,Date
对象是一个日期对象。它没有任何格式(如字符串)。
这对你有帮助吗:
extension String {
func convertDateString() -> String? {
return convert(dateString: self, fromDateFormat: "yyyy-MM-dd'T'HH:mm:ssZ", toDateFormat: "yyyy-MM-dd")
}
func convert(dateString: String, fromDateFormat: String, toDateFormat: String) -> String? {
let fromDateFormatter = DateFormatter()
fromDateFormatter.dateFormat = fromDateFormat
if let fromDateObject = fromDateFormatter.date(from: dateString) {
let toDateFormatter = DateFormatter()
toDateFormatter.dateFormat = toDateFormat
let newDateString = toDateFormatter.string(from: fromDateObject)
return newDateString
}
return nil
}
}
使用一行代码:
let newDateString = "my date string".convertDateString()
(假设一行代码就是一条语句)
如果你只想去掉其他位,只留下年、月、日,你可以只删除字符串中的第一个字符:
let inputString = "2018-05-15T16:37:55+0100"
let outputString = String(inputString.prefix(10))
但是如果你想把日期转换成另一个时区,你需要使用DateFormatter
,这需要超过1行代码。
此外,这种子字符串方法可能不适用于其他语言环境,在这些语言环境中,日期的字符数不同。
不,但您始终可以编写一个扩展程序来完成这项工作。
您应该使用一个函数来扩展 Date
,该函数获取格式 (yyyy-MM-dd'T'HH:mm:ssZ
) 作为参数,创建特殊的 DateFormatter
,然后照常转换 [=13] 之间的段落=] 和 Date
.
不幸的是没有标准方法。
我知道皈依者 日期到字符串 // 迄今为止的字符串
和
let formatter = DateFormatter()
formatter.dateFormat = "yyyy MM dd"
let date = formatter.date ( from: String )
或
let string = formatter.string ( from: Date )
但我想将日期转换为格式如下的日期 "yyyy-MM-dd'T'HH:mm:ssZ" 到 "yyyy-MM-dd" 日期格式。
有没有办法用一行做到这一点?
Answer to your question: No.
您可以创建一个 date/string 扩展程序,它可以在线解决您的问题。注意,Date
对象是一个日期对象。它没有任何格式(如字符串)。
这对你有帮助吗:
extension String {
func convertDateString() -> String? {
return convert(dateString: self, fromDateFormat: "yyyy-MM-dd'T'HH:mm:ssZ", toDateFormat: "yyyy-MM-dd")
}
func convert(dateString: String, fromDateFormat: String, toDateFormat: String) -> String? {
let fromDateFormatter = DateFormatter()
fromDateFormatter.dateFormat = fromDateFormat
if let fromDateObject = fromDateFormatter.date(from: dateString) {
let toDateFormatter = DateFormatter()
toDateFormatter.dateFormat = toDateFormat
let newDateString = toDateFormatter.string(from: fromDateObject)
return newDateString
}
return nil
}
}
使用一行代码:
let newDateString = "my date string".convertDateString()
(假设一行代码就是一条语句)
如果你只想去掉其他位,只留下年、月、日,你可以只删除字符串中的第一个字符:
let inputString = "2018-05-15T16:37:55+0100"
let outputString = String(inputString.prefix(10))
但是如果你想把日期转换成另一个时区,你需要使用DateFormatter
,这需要超过1行代码。
此外,这种子字符串方法可能不适用于其他语言环境,在这些语言环境中,日期的字符数不同。
不,但您始终可以编写一个扩展程序来完成这项工作。
您应该使用一个函数来扩展 Date
,该函数获取格式 (yyyy-MM-dd'T'HH:mm:ssZ
) 作为参数,创建特殊的 DateFormatter
,然后照常转换 [=13] 之间的段落=] 和 Date
.
不幸的是没有标准方法。