How to get next 10 days from current date in swift

删除回忆录丶 提交于 2020-01-02 00:53:12

问题


I have dateformat string like this "2015-03-09".How do i get next 10 days date from current date?any help will be appreciated.thanks in advance


回答1:


For a purely Swift 3 solution:

Calendar.current.date(byAdding: .day, value: 10, to: Date())



回答2:


Here's how to get a date 10 days from now, using built-in date modification method .dateByAddingUnit If all 10 days (dates) are required, can be looped by "value:10" part and added to array.

var tenDaysfromNow: NSDate {
    return NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: 10, toDate: NSDate(), options: [])!
    }

    print(tenDaysfromNow)

And for Swift3:

var tenDaysfromNow: Date {
   return (Calendar.current as NSCalendar).date(byAdding: .day, value: 10, to: Date(), options: [])!
}



回答3:


You can use the dateByAddingTimeInterval() method for this.

var dateStr          = "2015-03-09"
var formatter        = NSDateFormatter()
formatter.dateFormat = "YYYY-MM-dd"
var currDate         = formatter.dateFromString(dateStr)

for i in 1...10
{
    var interval = NSTimeInterval(60 * 60 * 24 * i)
    var newDate = currDate?.dateByAddingTimeInterval(interval)
    println(newDate)
}

EDIT:

As mentioned by @Martin R in the comments, it'll be better to use dateByAddingComponents() of NSCalendar class:

var calendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)
var dateComponent = NSDateComponents()

for i in 1...10
{
    dateComponent.day = i
    var newDate = calendar?.dateByAddingComponents(dateComponent, toDate: currDate!, options:nil)
    println(newDate)

}



回答4:


There is a function 'dateByAddingTimeInterval()' for an NSDate object. With this, you can create a NSDate from your date string. Then add 10 days = 10*24*60*60 to get next 10 days NSDate value

let today : NSDate = ....
let next10days = today.dateByAddingTimeInterval(10*60*60*24); //interval = seconds
//then you convert back to your date string format if you want, by using NSDateFormatter

To avoid problem with Daylighttime saving (@MartinR):

let cal = NSCalendar(calendarIdentifier: NSGregorianCalendar)
let next10Days = cal.dateByAddingUnit(NSCalendarUnit.DayCalendarUnit, value: 10, toDate: today, options: nil)



回答5:


Here is a swift 4/5 version of the answer by @MidhunMP

var dateStr          = "2015-03-09"
var formatter        = DateFormatter()
formatter.dateFormat = "YYYY-MM-dd"

var calendar = Calendar(identifier: .gregorian)
var dateComponent = DateComponents()

if let currDate = formatter.date(from: dateStr) {
    for i in 1...10 {
        let newDate = calendar.date(byAdding: .day, value: i, to: currDate)
        print(newDate) 
    }
}



回答6:


For Swift 3:

let now = NSDate()
let plusTen = now.dateByAddingDays(10)


来源:https://stackoverflow.com/questions/28875356/how-to-get-next-10-days-from-current-date-in-swift

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!