如何从给定日期获取下n天的日期

时间:2019-05-31 07:06:04

标签: ios swift

我可以从当前日期开始算起15天,但是当我尝试提供自定义日期而不是当前日期时,则无法正常工作。

 let date = sharedAppDelegate.dueDate
 let givenDate = Utility.convertStringToDate(format: "yyyy-MM-dd", 
dateString: date)

let futureDate = (givenDate as NSCalendar).date(byAdding: dateComponents, to: Date()) ?? Date()

第三行给出类似日期的错误?不能转换为NSCalendar。 预期结果:-FutureDate应该是指定日期的下15个日期

2 个答案:

答案 0 :(得分:2)

日期不是日历

您可以使用CalendarDate个对象进行计算或比较,在这种情况下,您希望使用日历将x天数添加到开始日期

尝试

let startDate = Date()
let tomorrow = Calendar.current.date(byAdding: .day, value: 1, to: startDate)

print(tomorrow)

输出:

  

可选(2019-06-01 07:14:48 +0000)

答案 1 :(得分:0)

您可以像这样扩展Date类。

extension Date {
   func dateByAddingDays(dateNum:Int) -> Date {
       return Calendar.gregorian.date(byAdding: .day, value: dateNum, to: self)!
   }
}

现在创建日期对象

let today = Date()
let dayAfterTomorrow = today.dateByAddingDays(dateNum:2)
debugPrint(dayAfterTomorrow)