[swift] SwiftDate를 사용하여 지정된 기간 동안의 특정 요일의 마지막 날짜 가져오기

SwiftDate는 Swift 언어에서 사용할 수 있는 강력한 날짜 및 시간 처리 라이브러리입니다. 이 라이브러리를 사용하면 날짜 및 시간의 다양한 연산을 쉽게 수행할 수 있습니다. 이번 포스트에서는 SwiftDate를 사용하여 지정된 기간 동안의 특정 요일의 마지막 날짜를 가져오는 방법을 알아보겠습니다.

SwiftDate 설치

SwiftDate를 사용하기 위해 먼저 Swift 패키지 매니저를 사용하여 프로젝트에 SwiftDate를 추가해야 합니다. 프로젝트의 Package.swift 파일에 다음 종속 항목을 추가하십시오.

dependencies: [
    .package(url: "https://github.com/malcommac/SwiftDate.git", from: "6.0.0")
]

그런 다음 터미널에서 다음 명령을 실행하여 종속 항목을 설치합니다.

$ swift package update

코드 예제

다음은 SwiftDate를 사용하여 지정된 기간 동안의 특정 요일의 마지막 날짜를 가져오는 예제입니다.

import SwiftDate

func getLastDayOfWeekday(weekday: Weekday, startDate: Date, endDate: Date) -> Date {
    let calendar = Calendar.current
    var currentDate = startDate

    while currentDate <= endDate {
        if calendar.component(.weekday, from: currentDate) == weekday.rawValue {
            var nextDate = currentDate + 7.days

            while calendar.component(.weekday, from: nextDate) == weekday.rawValue {
                currentDate = nextDate
                nextDate = currentDate + 7.days
            }

            return currentDate
        }

        currentDate = currentDate + 1.day
    }

    fatalError("Invalid input")
}

// 사용 예
let startDate = Date() // 시작 날짜
let endDate = Date() + 1.year // 종료 날짜 (1년 후)

let lastFriday = getLastDayOfWeekday(weekday: .friday, startDate: startDate, endDate: endDate)
print(lastFriday)

위의 코드는 특정 요일을 나타내는 Weekday 열거형을 받아서 지정된 기간 동안의 마지막 날짜를 반환하는 getLastDayOfWeekday 함수를 정의합니다. 함수는 시작 날짜와 종료 날짜를 입력으로 받습니다.

사용 예에서는 현재 날짜를 시작 날짜로 하고, 1년 후를 종료 날짜로 설정한 후 금요일의 마지막 날짜를 구합니다. print 함수를 사용하여 결과를 출력합니다.

결론

SwiftDate를 사용하여 지정된 기간 동안 특정 요일의 마지막 날짜를 가져오는 방법을 살펴보았습니다. SwiftDate는 날짜 및 시간 처리 작업을 간편하게 해주는 강력한 라이브러리입니다. 필요한 경우 추가적인 참고 자료를 확인하시기 바랍니다.