使用dateFormat将Swift转换为Date

时间:2018-05-15 14:59:52

标签: ios swift nsdate nsdateformatter

我知道转换 字符串日期// 字符串到日期

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”

无论如何使用一行来执行此操作?

3 个答案:

答案 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

不幸的是,没有标准的方法。