2017-02-27 12 views
1

文字列( "dd MM yyyy"形式)を引数として与えられた翌日を返す関数を記述しようとしています。例えばSwift - 次の日付を取得する

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

は印刷されます:

01 01 2017 

を誰かがこれを行う方法私を見ることができますか?ありがとう

+0

あなたはこのフレームワークを使用できる前に、あなたは、迅速に日付と働いていない場合:https://github.com/malcommac/SwiftDateを - 答えの多くはSOそれは問題を解決するためにここにもあります日付を使って作業するには、検索機能を使用してください:-) –

答えて

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") 
関連する問題