NSDate Swift 3 - EVReflection

时间:2017-07-07 20:54:44

标签: swift swift3

我正在使用EVReflection而Date不起作用。并且使用NSDate我不知道如何格式化为'dd-MM-yyyy HH:mm'的字符串。

2 个答案:

答案 0 :(得分:1)

两件事:

第一: 你需要问一个特定的问题,总是使用类似的代码,或者显示你想要实现的内容的实际代码。这些都不在这里。

第二: 不幸的是,你不想做什么。看看EVReflection,它的属性设置器.setObjectForKey不适用于结构体,如果你查看the apple docsDate的页面标题,它就是一个结构体。做你的研究!

EVReflection建议:

  

不使用结构,而是为此创建自己的对象模型   结构

所以你必须尝试一下,看看它是否有效。

对于您的NSDate格式,请使用类似found in this post here的扩展程序:

extension Date {

    var currentUTCTimeZoneDate: String {
        let formatter = DateFormatter()
        formatter.timeZone = TimeZone(identifier: "UTC")
        formatter.amSymbol = "AM"
        formatter.pmSymbol = "PM"
        formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"

        return formatter.string(from: self)
    }
}

您可以在NSDate上使用:

extension NSDate {

    var currentUTCTimeZoneDate: String {
        return (self as Date).currentUTCTimeZoneDate
    }
}


let d = NSDate().currentUTCTimeZoneDate
print(d) // prints 2017-07-07 22:19:22

答案 1 :(得分:1)

EVReflection中使用的默认日期格式化程序是" yyyy' MM' - ' dd' ' HH':'毫米':' SSZ" 如果要更改默认格式化程序,则可以使用以下代码:

    dateFormatter = DateFormatter()
    dateFormatter!.locale = Locale(identifier: "en_US_POSIX")
    dateFormatter!.timeZone = TimeZone(secondsFromGMT: 0)
    dateFormatter!.dateFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ssZ"
    EVReflection.setDateFormatter(dateFormatter)

如果您有一个具有不同格式的属性,请使用EVReflection属性转换器函数。