使用NSDate()在swift中创建未来日期

kri*_*orn 23 nscalendar swift

我收到一个错误:"在调用中缺少参数'coder'的参数"以获取以下代码:

var components = NSDateComponents()     
components.setValue(1,forComponent: NSCalendarUnit.CalendarUnitMonth);
var expirationDate = NSCalendar.currentCalendar().dateByAddingComponents(components,       toDate: NSDate(),options:0)
Run Code Online (Sandbox Code Playgroud)

文档要求:

NSCalendar.currentCalendar().dateByAddingComponents(<#comps: NSDateComponents?#>, toDate: <#NSDate?#>, options: <#NSCalendarOptions#>)
Run Code Online (Sandbox Code Playgroud)

任何人都能看到我错过的东西吗?我没有看到名为'coder'的参数需要.

hol*_*lex 51

它看起来如何

swift 4.x

let date = Date()
var components = DateComponents()
components.setValue(1, for: .month)
let expirationDate = Calendar.current.date(byAdding: components, to: date)
Run Code Online (Sandbox Code Playgroud)

swift 2.0

let components: NSDateComponents = NSDateComponents()
components.setValue(1, forComponent: NSCalendarUnit.Month);
let date: NSDate = NSDate()
let expirationDate = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: date, options: NSCalendarOptions(rawValue: 0))
Run Code Online (Sandbox Code Playgroud)

迅捷1.2

var components = NSDateComponents()
components.setValue(1, forComponent: NSCalendarUnit.CalendarUnitMonth);
let date: NSDate = NSDate()
var expirationDate = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: date, options: NSCalendarOptions(0))
Run Code Online (Sandbox Code Playgroud)

Objective-C的

NSDate *date = [NSDate new];  
NSDateComponents *components = [NSDateComponents new];
components.month = 1;
NSDate *expirationDate = [[NSCalendar currentCalendar] dateByAddingComponents:components toDate:date options:0];
Run Code Online (Sandbox Code Playgroud)

  • 您也可以使用`[]`而不是`NSCalendarOptions(rawValue:0)` (2认同)

Luk*_*meo 12

Swift 3的语法

var components = DateComponents()
components.setValue(1, forComponent: .month)
let date: Date = Date()
let expirationDate = Calendar.current.date(byAdding: components, to: date, options: [])
Run Code Online (Sandbox Code Playgroud)


Cla*_*aus 6

最新的Swift 3语法:

var components = DateComponents()
components.setValue(1, for: .month)
let date: Date = Date()
let expirationDate = Calendar.current.date(byAdding: components, to: date)
Run Code Online (Sandbox Code Playgroud)