[swift] SwiftDate를 사용하여 주어진 날짜의 다음 특정 요일 가져오기

SwiftDate는 Swift에서 간편하게 날짜와 시간을 다룰 수 있는 라이브러리입니다. 이 라이브러리를 사용하여 주어진 날짜의 다음 특정 요일을 가져오는 방법에 대해 알아보겠습니다.

먼저, SwiftDate를 프로젝트에 추가해야 합니다. 이를 위해 CocoaPods를 사용하여 설치하는 방법을 설명하겠습니다.

  1. 프로젝트의 Podfile에 다음 내용을 추가합니다.
platform :ios, '9.0'
use_frameworks!

target 'YourProjectTarget' do
    pod 'SwiftDate'
end
  1. 터미널에서 프로젝트 디렉토리로 이동한 후 pod install 명령을 실행합니다.
$ cd /path/to/your/project
$ pod install

이제 SwiftDate를 사용할 준비가 되었습니다.

import SwiftDate

func getNextDayOfWeek(from date: Date, dayOfWeek: String) -> Date {
    var calendar = Calendar.current
    calendar.locale = Locale(identifier: "ko_KR")

    let weekdays = ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"]
    let currentWeekdayIndex = calendar.component(.weekday, from: date) - 1

    guard let targetWeekdayIndex = weekdays.firstIndex(of: dayOfWeek) else {
        fatalError("Invalid day of week")
    }
    let distance = (targetWeekdayIndex - currentWeekdayIndex + 7) % 7

    let nextDate = calendar.date(byAdding: .day, value: distance, to: date)!

    return nextDate
}

let currentDate = Date()
let nextSunday = getNextDayOfWeek(from: currentDate, dayOfWeek: "일요일")
print(nextSunday)

위의 코드는 getNextDayOfWeek(from:dayOfWeek:) 함수를 정의합니다. 이 함수는 주어진 날짜(date)부터 다음 특정 요일(dayOfWeek)을 가져오는 역할을 합니다.

함수 내부에서는 Calendar 객체를 사용하여 현재 요일의 인덱스와 목표 요일의 인덱스를 계산합니다. 그리고 두 인덱스 차이를 이용하여 목표 요일까지의 거리를 계산하고, 이를 주어진 날짜에 더하여 다음 특정 요일의 날짜를 구합니다.

마지막으로, 위의 예시에서는 현재 날짜를 기준으로 일요일을 가져오도록 getNextDayOfWeek(from:dayOfWeek:) 함수를 호출하고 그 결과를 출력합니다.

이렇게 SwiftDate를 사용하여 주어진 날짜의 다음 특정 요일을 쉽게 가져올 수 있습니다.

참고: