2017-01-13 2 views
1

JSONから日付を解析しています。 URLからJSONの日付を解析した後、私はそれから最後の30の日付を取得したい。swift 3.0を使用して日付から最後の30日を取得する方法

Alamofire.request("url") .responseJSON { response in 

      if let arr = response.result.value as? [String:AnyObject] 
      { 
       let inrc = (arr["date"])! 
       self.myfuncDate(str: inrc as! String) 
      } 
     } 

func myfuncDate(str: String) 
    { 
     let dateFormatter = DateFormatter() 
     dateFormatter.dateFormat = "yyyy-MM-dd" 
     let date = dateFormatter.date(from: str) 
     currrentDate = date 
     //currentDate is globalVariable 
    } 

ここでは過去30日間に印刷しています。

for i in 1..<31 
{ 
     let day:String = String(cal.component(.day, from: currrentDate)) 
     days.append(day) 
     print(days) 

    Output : ["13", "12", "11", "10", "9", "8", "7", "6", 
    "5", "4", "3", "2", "1", "31", "30", "29", "28", "27", "26", "25", "24", 
    "23", "22", "21", "20", "19", "18", "17", "16", "15"] 
} 

日付の形式で印刷したいと思います。

For Example: ["13-01-2017", "12-01-2017", "11-01-2017", "10-01-2017"...] 

私を助けてください。

答えて

3

あなたは、このように日からの最後の30個の日付を取得することができます:

var today = Date() 
var dateArray = [String]() 
for i in 1...30{ 
    let tomorrow = Calendar.current.date(byAdding: .day, value: -1, to: today) 
    let date = DateFormatter() 
    date.dateFormat = "dd-MM-yyyy" 
    var stringDate : String = date.string(from: today) 
    today = tomorrow! 
    dateArray.append(stringDate) 
} 
print(dateArray) 

OUTPUT:

["13-01-2017", "12-01-2017", "11-01-2017", "10-01-2017", "09-01-2017", "08-01-2017", "07-01-2017", "06-01-2017", "05-01-2017", "04-01-2017", "03-01-2017", "02-01-2017", "01-01-2017", "31-12-2016", "30-12-2016", "29-12-2016", "28-12-2016", "27-12-2016", "26-12-2016", "25-12-2016", "24-12-2016", "23-12-2016", "22-12-2016", "21-12-2016", "20-12-2016", "19-12-2016", "18-12-2016", "17-12-2016", "16-12-2016", "15-12-2016"] 

を、それはあなたを助けることがあり、これを試してみてください。

+0

おかげで本当に簡単です。 –

+0

ようこそ@Ashish – Bhumi

1

これはスウィフト3. @Bhumiは、それが動作

var startDate = Calendar.current.date(byAdding: .day, value: -30, to: dateFromAPI)! // first date 
let endDate = dateFromAPI // last date 

let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd" 

while startDate <= endDate { 
    print(formatter.string(from: startDate)) 
    startDate = Calendar.current.date(byAdding: .day, value: 1, to: startDate)! 
} 
+0

ありがとう@brandonscript –

関連する問題