使用Swift向NSDate添加天数/小时

使用Swift向NSDate添加天数/小时,swift,nsdate,Swift,Nsdate,我知道这是一个非常基本的问题,我知道我可能找不到答案,因为我没有提出正确的问题,但是如何更改NSDate值 例如,我有一个date属性,它被设置为datePicker的日期,我想创建一个新属性,它是date属性的前一天,另一个是一小时之前 添加和删除天数 为了避免夏令时出现问题,在添加天数时,应使用NSCalendar Swift 3: let tomorrow = Calendar.current.date(byAdding: .day, // updated this params

我知道这是一个非常基本的问题,我知道我可能找不到答案,因为我没有提出正确的问题,但是如何更改NSDate值

例如,我有一个
date
属性,它被设置为
datePicker
的日期,我想创建一个新属性,它是
date
属性的前一天,另一个是一小时之前

添加和删除天数 为了避免夏令时出现问题,在添加天数时,应使用
NSCalendar

Swift 3:

let tomorrow = Calendar.current.date(byAdding:
    .day, // updated this params to add hours
    value: 1,
    to: now)
Swift 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,请参见例如…@MartinR:谢谢。我更新了我的答案。