为什么NSDate在字符串中不同?

时间:2014-11-29 02:00:33

标签: swift nsdate

在游乐场,我正在测试一些代码。

如果我输入

NSDate() 

然后我得到" 2014年11月28日,下午7:56"

但是,如果我输入

var dateString: String = "\(NSDate())"

然后我得到" 2014-11-29 01:56:45 + 0000"

为什么字符串中的默认时间与简单的NSDate()声明不同?

1 个答案:

答案 0 :(得分:1)

  

在游乐场,我正在测试一些代码。

     

如果我输入

     

NSDate()然后我得到" 2014年11月28日,下午7:56"

这是您当地的时间,但您无法将时区存储到NSDate对象中。

  

但是,如果我输入

     

var dateString:String ="(NSDate())"然后我得到" 2014-11-29 01:56:45   + 0000"

这是格林威治标准时间,以及它如何存储到您的NSDate

let dateString = "\(Date())"

与:

相同
let dateString = Date().description

如果您想知道日期的当地时间,您可以按照以下步骤操作:

编辑/更新Swift 3或更高版本:

extension Formatter {
    static let localTimestamp: DateFormatter = {
        let dateFormatter = DateFormatter()
        dateFormatter.timeStyle = .full
        return dateFormatter
    }()
}
extension Date {
    var localTimestamp: String {
        return Formatter.localTimestamp.string(from: self)
    }
}

Date().localTimestamp  // "6:40:19 PM Brasilia Standard Time"