2017-02-08 8 views
2

좋아요, 스위프트 3에 let date = Date()이 있는데 가장 가까운 시간대 목록을 가져와야합니다. swift 3 가장 가까운 시간대 목록보기

은 그래서 원하는 목록 내가 날짜의 목록을 얻을 수있는 방법

2017-02-08 15:30:00 +0000
2017-02-08 15:45:00 +0000
2017-02-08 16:00:00 +0000

됩니다의 현재 날짜가 2017-02-08 15:24:56 +0000입니다 가정 해 봅시다?

EDIT 1 2017년 2월 8일 오후 5시 54분

여기

난 그냥하려고 노력하고 내가 원하는 결과를 얻을 모습입니다.

let currentDate = Date() 
    var minute = Calendar.current.component(.minute, from: currentDate) 

    if minute < 15 { 
     minute = 15 
    } else if minute < 30 { 
     minute = 30 
    } else if minute < 45 { 
     minute = 45 
    } else { 
     minute = 0 
    } 

    var hourQuarterDate = Calendar.current.nextDate(after: currentDate, matching: DateComponents(minute: minute), matchingPolicy: .strict, repeatedTimePolicy: .first, direction: .forward)! 

    var hourQuarters = [Date]() 
    hourQuarters.append(hourQuarterDate) 

    for _ in 1...10 { 
     hourQuarterDate = Calendar.current.date(byAdding: .minute, value: 15, to: hourQuarterDate)! 
     hourQuarters.append(hourQuarterDate) 
    } 
+0

당신이 시도 것을 보여주십시오 여기 – shallowThought

+0

난 그냥하려고 노력 무엇이며 그것이 내가 내 EDIT (1)를 참조하십시오 –

+0

필요 결과를 얻을처럼 보이는, 확실하지 그것은 더 작성 될 수있는 경우 강력한 방법이지만 예상대로 작동합니다. –

답변

2

편집이 도움이되었습니다. 여기에 기반하여 구현 한 약간의 변형이 있습니다. 15 분 간격을 추가하는 방법

// Parameters 
let minuteGranuity = 15 
let numberOfDates = 4 

// Find current date and date components 
let now = Date()         
//2017-03-06 13:23:40 +0000 
let calendar = Calendar.current 
let hour = calendar.component(.hour, from: now) 
let minute = calendar.component(.minute, from: now) 

// Round down to nearest date: 
let floorMinute = minute - (minute % minuteGranuity) 
let floorDate = calendar.date(bySettingHour: hour, 
           minute: floorMinute, 
           second: 0, 
           of: now)! 

이 편집에서와 마찬가지로, 나는 "날짜 (byAdding"를 사용

내 주요 단계는 시간의 최신 분기까지 현재 날짜를 반올림하는 것입니다 그 기준일 :.

var dates: [Date] = [] 
for minutes in stride(from: minuteGranuity, through: minuteGranuity*numberOfDates, by: minuteGranuity) { 
    let newDate = calendar.date(byAdding: .minute, value: minutes, to: floorDate)! 
    dates.append(newDate) 
} 

for date in dates { 
    print(date) 
} 

// 2017-03-06 13:30:00 +0000 
// 2017-03-06 13:45:00 +0000 
// 2017-03-06 14:00:00 +0000 
// 2017-03-06 14:15:00 +0000 
+0

Ver 좋은데. 고마워요 ~ Noyer282! –