当我注意到一些有趣的东西时,我试图获得下一个约会。当我做的时候
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天后的日期。简而言之,我目前的两个街区的日期不同。
有人可以向我解释为什么会这样吗?
感谢
答案 0 :(得分:0)
你知道我曾经认识过类似的东西。我所有的Date
价值总是提前8小时(我住在北加州)。
查看名为" ISO 8601"
的内容我不知道你是否熟悉祖鲁时间或现在所谓的UTC(我认为的世界时间坐标),但这是一个忽视时区的普遍时间
你可能仍然得到正确的日期和时间,它们只是用UTC反映出来。
答案 1 :(得分:0)
以下是苹果开发者网站关于 NSDate ,
的报价NSDate对象封装单个时间点,与any无关 特定的日历系统或时区。日期对象是 不可变的,表示相对于的不变时间间隔 绝对参考日期(2001年1月1日00:00:00 UTC)。
因此,它意味着它不会在任何特定区域中指定时间,而是表示某个特定时间的不透明对象。 NSDateFormatter负责格式化日期并将其表示为您想要的时区。