Swift3 当前日期的NSDate不同?

Swift3 当前日期的NSDate不同?,swift3,nsdate,Swift3,Nsdate,我正想安排下一次约会,突然发现了一些有趣的事情。当我这样做的时候 let date = NSDate() let calender = NSCalendar.current let components = calender.dateComponents([.year, .month, .day], from: date as Date) dateLabel.text = "\(components.month!)/\(components.day!)/\(components.year

我正想安排下一次约会,突然发现了一些有趣的事情。当我这样做的时候

let date = NSDate()
let calender = NSCalendar.current
let components = calender.dateComponents([.year, .month, .day], from: date as Date)
    dateLabel.text = "\(components.month!)/\(components.day!)/\(components.year!)"
我得到了我想要的日期,即当前日期

然而,当我

@IBAction func nextDate(_ sender: UIButton) {

    var oneDayfromNow: NSDate {
        return NSCalendar.current.date(byAdding: .day, value: 1, to: NSDate() as Date)! as NSDate
    }
    print("Current Date: \(calender)")
    print(oneDayfromNow)
}
在打印当前日期时,我实际上得到了下一个日期的日期,我的oneDayfromNow变量是从现在起2天的日期。简言之,我目前的两个街区的日期是不同的

有人能解释一下为什么会这样吗


谢谢

你知道我以前也认识类似的东西。我所有的
Date
值总是提前8小时(我住在北加利福尼亚州)

看看所谓的“ISO8601”

我不知道你是否熟悉祖鲁时间或者现在所说的UTC(我想是世界时坐标),但这是一个忽略时区的世界时


您可能仍然得到了正确的日期和时间,它们只是用UTC反映出来。

以下是来自苹果开发者网站的一段关于NSDate的引文

NSDate对象封装单个时间点,独立于任何 特定的历法系统或时区。日期对象是 不可变,表示相对于 绝对参考日期(2001年1月1日UTC 00:00:00)

因此,它意味着它不在任何特定区域指定时间,而是一个表示特定时间的不透明对象。相反,NSDateFormatter负责格式化日期并将其表示为您想要的时区