NSDate对于当前日期有何不同?

时间:2017-01-09 00:58:04

标签: 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!)"

我得到了我想要的日期,这是当前日期。

但是,当我这样做时

@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天后的日期。简而言之,我目前的两个街区的日期不同。

有人可以向我解释为什么会这样吗?

感谢

2 个答案:

答案 0 :(得分:0)

你知道我曾经认识过类似的东西。我所有的Date价值总是提前8小时(我住在北加州)。

查看名为" ISO 8601"

的内容

ISO 8601 - Wikipedia

我不知道你是否熟悉祖鲁时间或现在所谓的UTC(我认为的世界时间坐标),但这是一个忽视时区的普遍时间

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

答案 1 :(得分:0)

以下是苹果开发者网站关于 NSDate

的报价
  

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

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