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

SwiftDate는 Swift에서 날짜 및 시간 작업을 쉽게 처리할 수 있도록 해주는 유용한 라이브러리입니다. 이 라이브러리를 사용하면 지정된 기간 동안 특정 요일의 날짜 목록을 쉽게 가져올 수 있습니다.

1. SwiftDate 라이브러리 설치

먼저, 프로젝트에 SwiftDate 라이브러리를 설치해야 합니다. Swift Package Manager를 사용할 경우 Package.swift 파일에 아래와 같은 의존성을 추가합니다.

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

CocoaPods를 사용한다면 Podfile에 아래와 같은 팟을 추가합니다.

pod 'SwiftDate', '~> 6.0'

Carthage를 사용한다면 Cartfile에 아래와 같은 줄을 추가합니다.

github "malcommac/SwiftDate" ~> 6.0

2. 코드 작성

다음으로, SwiftDate를 사용하여 지정된 기간 동안의 특정 요일의 날짜 목록을 가져오는 코드를 작성해보겠습니다. 아래의 예제는 2022년 1월 1일부터 2022년 12월 31일까지 매주 수요일인 날짜를 가져오는 코드입니다.

import SwiftDate

let startDate = DateInRegion(year: 2022, month: 1, day: 1)
let endDate = DateInRegion(year: 2022, month: 12, day: 31)

let wednesdays = startDate...endDate |> [(.weekday, .wednesday)]

for date in wednesdays {
    print(date.toFormat("yyyy-MM-dd"))
}

위의 코드에서는 DateInRegion 객체를 사용하여 시작일과 종료일을 설정합니다. |> 연산자를 사용하여 DateInRegion 객체의 범위를 생성하고, [.weekday, .wednesday]와 같은 형태로 원하는 요일을 선택합니다. 마지막으로, 가져온 날짜 목록을 순회하며 원하는 형식으로 출력합니다.

3. 실행 결과

위의 코드를 실행하면 아래와 같은 결과가 출력됩니다.

2022-01-05
2022-01-12
2022-01-19
2022-01-26
...

출력된 날짜 목록은 2022년 1월 1일부터 2022년 12월 31일까지의 모든 수요일을 나타냅니다.

참고 자료