【发布时间】:2016-10-31 10:56:12
【问题描述】:
我知道这是一个非常基本的问题,并且我知道我可能找不到答案,因为我没有提出正确的问题,但是如何更改 NSDate 值?
例如,我有一个date 属性,它设置为datePicker 的日期,我想创建一个新属性,它是date 属性的前一天,另一个是一小时前。
【问题讨论】:
我知道这是一个非常基本的问题,并且我知道我可能找不到答案,因为我没有提出正确的问题,但是如何更改 NSDate 值?
例如,我有一个date 属性,它设置为datePicker 的日期,我想创建一个新属性,它是date 属性的前一天,另一个是一小时前。
【问题讨论】:
为了避免夏令时出现问题,当您添加天数时,您应该使用NSCalendar
斯威夫特 3:
let tomorrow = Calendar.current.date(byAdding:
.day, // updated this params to add hours
value: 1,
to: now)
斯威夫特 2:
let tomorrow = NSCalendar.currentCalendar().dateByAddingUnit(
.Day, // updated this params to add hours
value: 1,
toDate: now,
options: .MatchFirst)
请注意,您没有改变原始实例 (
now),您只是在构建一个新实例。事实上NSDate类是不可变的。
【讨论】:
7 * 24 * 60 * 60 作为一天的持续时间是错误的。在夏令时的地区,一天可能有 23 或 25 小时。正确的方法是使用 NSCalendar,参见例如stackoverflow.com/a/27048988/1187415.