我正在嘗試編寫一個函數,它接受一個字符串(格式爲「dd MM yyyy」)並返回給定參數之後的那一天。Swift - 獲取下一個日期
例如:
let nextDay = getNextDay("31 12 2016")
print(nextDay)
將打印:
01 01 2017
有人能告訴我如何做到這一點?謝謝
我正在嘗試編寫一個函數,它接受一個字符串(格式爲「dd MM yyyy」)並返回給定參數之後的那一天。Swift - 獲取下一個日期
例如:
let nextDay = getNextDay("31 12 2016")
print(nextDay)
將打印:
01 01 2017
有人能告訴我如何做到這一點?謝謝
這裏的代碼片段可能會幫助你。
//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)")
}
+1使用'.date(byAdding :, value :, to:)'。堆棧溢出中的很多示例通過添加'24 * 60 * 60'秒錯誤地計算第二天。 –
謝謝@RoboticCat的欣賞 –
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")
如果你不迅速處理日期的工作之前,你可以用這個框架:https://github.com/malcommac/SwiftDate - 在這裏還有很多答案中,這樣解決問題使用日期,只需使用搜索功能:-) –