我知道转换 字符串日期// 字符串到日期
带
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”。
无论如何使用一行来执行此操作?
答案 0 :(得分:4)
回答你的问题:否。
您可以创建日期/字符串扩展名,以便在一行中解决您的问题。注意,ol.control.Attribution
对象是日期对象。它没有任何格式(如字符串)。
这可以帮到你:
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
}
}
答案 1 :(得分:0)
(假设一行代码意味着一个陈述)
如果你只是想剥去其他位并只留下年,月,日,你可以直接删掉字符串中的第一个字符:
let inputString = "2018-05-15T16:37:55+0100"
let outputString = String(inputString.prefix(10))
但是如果你想将日期转换为另一个时区,你需要使用需要超过1行代码的DateFormatter
。
此外,此子字符串方法可能无法在其他区域设置中使用,其中日期的格式设置为不同的字符数。
答案 2 :(得分:0)
不,但您总是可以编写一份为您完成工作的扩展程序。
您应该使用获取格式(Date
)作为参数的函数扩展yyyy-MM-dd'T'HH:mm:ssZ
,创建特殊DateFormatter
,然后像往常一样使用String
之间的段落进行转换和Date
。
不幸的是,没有标准的方法。