簡體   English   中英

如何快速獲取當前日期之后的10天

[英]How to get next 10 days from current date in swift

我有這樣的日期格式字符串“ 2015-03-09”。如何從當前日期獲取下一個10天的日期?任何幫助將不勝感激。

對於純粹的Swift 3解決方案:

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

以下是使用內置的日期修改方法.dateByAddingUnit獲取從現在開始10天的日期的方法如果需要全部10天(日期),則可以通過“ value:10”部分循環並添加到數組中。

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

    print(tenDaysfromNow)

對於Swift3:

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

您可以為此使用dateByAddingTimeInterval()方法。

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)
}

編輯:

正如@Martin R在評論中提到的,最好使用NSCalendar類的dateByAddingComponents()

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)

}

NSDate對象有一個函數“ dateByAddingTimeInterval()”。 這樣,您可以從日期字符串創建NSDate。 然后加上10天= 10 * 24 * 60 * 60得到下一個10天的NSDate值

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

為了避免夏令時(@MartinR)出現問題:

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

這是@MidhunMP的快速4/5版本答案

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) 
    }
}

對於Swift 3:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM