J'ai une chaîne de format de date comme celle-ci "2015-03-09". Comment puis-je obtenir la date des 10 prochains jours à partir de la date actuelle? Toute aide sera appréciée.Merci à l'avance
Pour une solution purement Swift 3:
Calendar.current.date(byAdding: .day, value: 10, to: Date())
Voici comment obtenir une date dans 10 jours à partir de maintenant, à l'aide de la méthode de modification de date intégrée.
var tenDaysfromNow: NSDate {
return NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: 10, toDate: NSDate(), options: [])!
}
print(tenDaysfromNow)
Et pour Swift3:
var tenDaysfromNow: Date {
return (Calendar.current as NSCalendar).date(byAdding: .day, value: 10, to: Date(), options: [])!
}
Vous pouvez utiliser la méthode dateByAddingTimeInterval () pour cela.
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)
}
MODIFIER:
Comme mentionné par @Martin R dans les commentaires, il vaudra mieux utiliser dateByAddingComponents () de la classe NSCalendar:
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)
}
Il existe une fonction 'dateByAddingTimeInterval ()' pour un objet NSDate. Avec cela, vous pouvez créer un NSDate à partir de votre chaîne de date. Ajoutez ensuite 10 jours = 10 * 24 * 60 * 60 pour obtenir la valeur NSDate des 10 prochains jours
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
Pour éviter tout problème avec l'heure d'été (@MartinR):
let cal = NSCalendar(calendarIdentifier: NSGregorianCalendar)
let next10Days = cal.dateByAddingUnit(NSCalendarUnit.DayCalendarUnit, value: 10, toDate: today, options: nil)
Voici une Swift 4/5 version de la réponse de @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)
}
}