2014-12-02 2 views
-2

저는 Swift 앱을 만들고 있습니다. 배열의 문자열 날짜는 dd-mm-yyyy입니다. 동일한 날짜가 여러 번 나타날 수 있습니다. 버튼을 클릭하면 현재 날짜에서 지난 2 개월과 같은 달의 모든 데이터를 가져오고 싶습니다.날짜 문자열이 포함 된 배열에서 데이터를 가져 오는 방법

은 예를 들어 어레이 01-10-2013, 23-11-2013, 20-12-2013, 20-12-2013, 20-12-2013, 본 일 20-12-2013 등 일부 요소를 갖는다. 버튼을 클릭하면 달이 포함 된 모든 데이터 10을 다른 배열에 저장해야합니다.

어떻게 할 수 있습니까?

+0

가있는 NSDate 객체 또는 문자열의 배열입니다? – jaym

+0

문자열 배열 ... – user2413621

답변

0

신속 배열 필터 아래에 시도

 let array = ["01-10-2013", "23-11-2013", "20-12-2013", "20-12-2013", "20-12-2013"]; 
     var iIndex = 0 
     let filteredArray = array.filter { 
      let myDate = $0 as NSString 
      let currentMonth = 12 // get it dynamically 
      let currentDate = 20 // get it dynamically 
      let currentYear = 2014 

      let monthToCompare = currentMonth - 2 

      if(
       myDate.substringWithRange(NSRange(location: 0, length: 2)) == ("" + currentDate) 
      && myDate.substringWithRange(NSRange(location: 3, length: 2)) == ("" + monthToCompare) 
      && myDate..substringWithRange(NSRange(location: 6, length: 4)) == ("" + currentYear) 
     ){ 

       println("Original Index"+\(iIndex)) 
       return true 
      }else{ 
       return false 
      } 

      iIndex++ 
     } 

     println(filteredArray) // This should have filtered array 
+0

원래 배열에서 첫 번째로 일치하는 요소의 인덱스를 찾는 방법을 알려줄 수도 있습니다 – user2413621

+0

내 대답 – jaym

+0

을 편집하면 u는 동시에 날짜와 월을 필터링하는 방법을 알려줍니다 ... ie. 날짜를 얻는 방법 20-10-2013 오늘이 20-12-2013 ... – user2413621

1

사용 NSCalendar, NSDateFormatter, NSDateNSDateComponents :

import Foundation 

let cal = NSCalendar.currentCalendar() 
let formatter = NSDateFormatter() 
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") 
formatter.dateFormat = "dd-MM-yyyy" 

let now = NSDate() 
let target = cal.dateByAddingUnit(.CalendarUnitMonth, value: -2, toDate: now, options: nil)! 
let targetcomps = cal.components(.CalendarUnitYear | .CalendarUnitMonth , fromDate: target) 

let ary = ["01-10-2014", "23-11-2014", "20-12-2014", "20-12-2014", "20-10-2014"] 
let result = ary.filter { 
    if let date = formatter.dateFromString($0) { 
     return targetcomps == cal.components(.CalendarUnitYear | .CalendarUnitMonth , fromDate: date) 
    } 
    return false 
} 

println(result) 
+0

이 코드를 사용한 후 내 앱이 충돌합니다 ... – user2413621

관련 문제