ios - Как добавить один месяц в NSDate?



iphone objective-c (6)

В Swift 2.0

    let startDate = NSDate()
    let dateComponent = NSDateComponents()
    dateComponent.month = 1
    let cal = NSCalendar.currentCalendar()
    let endDate = cal.dateByAddingComponents(dateComponent, toDate: startDate, options: NSCalendarOptions(rawValue: 0))

Как добавить месяц к объекту NSDate?

NSDate *someDate = [NSDate Date] + 30Days.....;

Answer #1

Вам нужно использовать NSDateComponents :

NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setMonth:1];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *newDate = [calendar dateByAddingComponents:dateComponents toDate:originalDate options:0];
[dateComponents release]; // If ARC is not used, release the date components

Answer #2

ДЛЯ SWIFT 3.0

здесь функция, вы можете сократить дни, месяц, день на любой счет, например, здесь, я сократил текущий год системной даты на 100 лет, вы можете сделать это за день, месяц также просто установите счетчик, а затем сохраните значения в массиве и делать то, что вы хотите сделать с этим массивом

func currentTime(){

    let date = Date()
    let calendar = Calendar.current
    var year = calendar.component(.year, from: date)
    let month = calendar.component(.month, from: date)
    let  day = calendar.component(.day, from: date)
    let pastyear = year - 100
    var someInts = [Int]()
    printLog(msg: "\(day):\(month):\(year)" )

    for _ in pastyear...year        {
        year -= 1
                     print("\(year) ")
        someInts.append(year)
    }

    print(someInts)
}

Answer #3

Для быстрого 3.0

extension Date {
    func addMonth(n: Int) -> Date {
        let cal = NSCalendar.current
        return cal.date(byAdding: .month, value: n, to: self)!
    }
    func addDay(n: Int) -> Date {
        let cal = NSCalendar.current
        return cal.date(byAdding: .day, value: n, to: self)!
    }
    func addSec(n: Int) -> Date {
        let cal = NSCalendar.current
        return cal.date(byAdding: .second, value: n, to: self)!
    }
}

Answer #4

Например, чтобы добавить 3 месяца к текущей дате в Swift:

let date = NSCalendar.currentCalendar().dateByAddingUnit(.MonthCalendarUnit, value: 3, toDate: NSDate(), options: nil)!

В Swift 2.0:

let date = NSCalendar.currentCalendar().dateByAddingUnit(.Month, value: 3, toDate: NSDate(), options: [])
  • Новая структура NSCalendarUnit позволяет вам просто указать .Month
  • Параметры, которые используют OptionSetType (например, options: параметр, который принимает NSCalendarOptions ), не могут быть NSCalendarOptions nil , поэтому передайте пустой набор ( [] ) для представления «без параметров».

Answer #5

С iOS 8 и OS X 10.9 вы можете добавить NSCalendarUnits с помощью NSCalendar :

Objective-C

NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *someDate = [cal dateByAddingUnit:NSCalendarUnitMonth value:1 toDate:[NSDate date] options:0];

Swift 3

let date = Calendar.current.date(byAdding: .month, value: 1, to: Date())

Swift 2

let cal = NSCalendar.currentCalendar()
let date = cal.dateByAddingUnit(.Month, value: 1, toDate: NSDate(), options: [])




nsdate