我有代码:

let components = NSDateComponents()
components.month -= 1
let dateInTheMiddleOfPeriod = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))!

但是dateInTheMiddleOfPeriod是2015- 11 -18 06:00:12 +0000,但是我希望2015- 12 -18 06:00:12 +0000,因为我需要上个月的日期。为什么会这样?

最佳答案

您应该使用NSCalendar方法日期,方法是通过加单位从今天减去一个月,然后使用NSCalendar方法组件来获取月份值,如下所示:

var previousMonth: Int {
    let cal = NSCalendar.autoupdatingCurrentCalendar()
    return cal.component(.Month, fromDate: cal.dateByAddingUnit(.Month, value: -1, toDate: NSDate(), options: [])!)
}

previousMonth   // 12

关于ios - 想获得上个月的NSDateComponents问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34848180/

10-10 18:34