2016-10-04 7 views
0

日付[1,2,3 ....現在の日付]を印刷したいが、正しい結果が得られません。 私は最初の日に私のコードで "1"が設定されているので、出力は[2,3,4]です。そして、私が1日を設定すると "0"です。結果は正しく表示されますが、追加の日付[1,2,3,4,5]が表示されます。そして、今日は2016年10月4日、私のタイムゾーンです。NSDateで正しく日付が使用されないSwift

let date = NSDate() 
    let components = NSCalendar.currentCalendar().components([.Day , .Month , .Year], fromDate: date) 
    let year = components.year 
    let month = components.month 
    let day = 1 // Output is [2,3,4] 
// let day = 0 than o/p [1,2,3,4,5] 


    dateFormatatter.dateFormat = "MMMM yyyy" 
    monthNameLabel.text = dateFormatatter.stringFromDate(date) 

    startDate.year = year 
    startDate.month = month 
    startDate.day = day 
    let startDateNSDate = calendar.dateFromComponents(startDate)! 

    var dateStart = startDateNSDate // first date 
    let endDate = NSDate() // last date 

    dateFormatatter.dateFormat = "dd" 


    while dateStart.compare(endDate) != .OrderedDescending { 
     // print(fmt.stringFromDate(date)) 
     // Advance by one day: 
     dateStart = calendar.dateByAddingUnit(.Day, value: 1, toDate: dateStart, options: [])! 


     let dateFormat1 = NSDateFormatter() 
     dateFormat1.dateFormat = "dd-MM-yyyy" 

     dateArrayCalendar.addObject(dateFormatatter.stringFromDate(dateStart)) 
     dateArrayForCompare.addObject(dateFormat1.stringFromDate(dateStart)) 

    } 

そして、私はしたい。このような結果[1,2,3,4]

、同じ問題がここ

let componentsForCompare = calendar.components([.Year, .Month], fromDate: date) 
     let startOfMonth = calendar.dateFromComponents(componentsForCompare)! 
     print(startOfMonth)//2016-09-30 18:30:00 +0000 
     print(dateFormatatter.stringFromDate(startOfMonth)) //01 

そのあなたがする必要が異なる出力します

答えて

0

を与えます開始時よりむしろを末尾にwhileループのに増やしてください:

while dateStart.compare(endDate) != .OrderedDescending { 
    // print(fmt.stringFromDate(date)) 
    // Advance by one day: 

    let dateFormat1 = NSDateFormatter() 
    dateFormat1.dateFormat = "dd-MM-yyyy" 

    dateArrayCalendar.addObject(dateFormatatter.stringFromDate(dateStart)) 
    dateArrayForCompare.addObject(dateFormat1.stringFromDate(dateStart)) 

    dateStart = calendar.dateByAddingUnit(.Day, value: 1, toDate: dateStart, options: [])! 
} 
+0

このコードを実行したとき、私は '[" 01 "、" 02 "、" 03 "、" 04 "]'を得ました - ここに私の遊び場からのコードです - https://gist.github.com/paulw11/278447c9678428fa584319a4d95c2facあなたのコードはあなたの質問では完全ではなかったので、私はいくつかの変数を宣言しなければなりませんでした。 – Paulw11

+0

どういう意味ですか? – Paulw11

+0

私がday = 1に設定し、私のdataArrayカレンダーをチェックインすると、最初の日付はバックエンドで30-09-2016です。アップロードされた画像を確認してください – iDeveloper

関連する問題