2017-02-27 84 views
1

我正在嘗試編寫一個函數,它接受一個字符串(格式爲「dd MM yyyy」)並返回給定參數之後的那一天。Swift - 獲取下一個日期

例如:

let nextDay = getNextDay("31 12 2016") 
print(nextDay) 

將打印:

01 01 2017 

有人能告訴我如何做到這一點?謝謝

+0

如果你不迅速處理日期的工作之前,你可以用這個框架:https://github.com/malcommac/SwiftDate - 在這裏還有很多答案中,這樣解決問題使用日期,只需使用搜索功能:-) –

回答

5

這裏的代碼片段可能會幫助你。

//Call method like this 

convertNextDate(dateString: "31 12 2016") 


// Method is here 

func convertNextDate(dateString : String){  
    let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "dd MM yyyy" 
    let myDate = dateFormatter.date(from: dateString)! 
    let tomorrow = Calendar.current.date(byAdding: .day, value: 1, to: myDate) 
    let somedateString = dateFormatter.string(from: tomorrow!) 
    print("your next Date is \(somedateString)") 
} 
+0

+1使用'.date(byAdding :, value :, to:)'。堆棧溢出中的很多示例通過添加'24 * 60 * 60'秒錯誤地計算第二天。 –

+0

謝謝@RoboticCat的欣賞 –

1
class DateHelper 
{ 

    lazy var formatter:DateFormatter = { 
    let formatter = DateFormatter() 
    formatter.dateFormat = "dd MM yyyy" 
    return formatter 
}() 

    lazy var dateComponents:DateComponents = { 
    var dateComp = DateComponents() 
    dateComp.day = 1 
    return dateComp 
}() 

    func getNext(dateString:String) -> String? 
    { 
    if let date  = self.formatter.date(from: dateString), 
     let nextDate = Calendar.current.date(byAdding: self.dateComponents, to: date) 
    { 
     return self.formatter.string(from: nextDate) 
    } 
    return nil 
    } 
} 

DateHelper().getNext(dateString: "31 12 2016") 
相關問題