【问题标题】:Adding days/hours to NSDate with Swift [duplicate]使用 Swift 向 NSDate 添加天/小时 [重复]
【发布时间】:2016-10-31 10:56:12
【问题描述】:

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

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

【问题讨论】:

    标签: swift nsdate


    【解决方案1】:

    添加和删除天数

    为了避免夏令时出现问题,当您添加天数时,您应该使用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.
    • @MartinR:谢谢。我更新了我的答案。
    猜你喜欢
    • 2017-09-08
    • 2011-12-31
    • 2011-12-03
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多