[swift] SwiftDate를 사용하여 주어진 날짜의 월의 마지막 날짜의 일자 가져오기

프로그래밍에서 특정 날짜의 월의 마지막 날짜를 찾는 것은 종종 필요한 작업입니다. 이를 위해 Swift에서는 SwiftDate 라이브러리를 사용할 수 있습니다. SwiftDate는 날짜 및 시간과 관련된 많은 유용한 기능을 제공하는 강력한 라이브러리입니다.

SwiftDate 설치하기

SwiftDate를 사용하기 위해서는 먼저 프로젝트에 SwiftDate를 설치해야 합니다. Cocoapods를 사용하는 경우, Podfile에 다음과 같은 줄을 추가하고 pod install 명령어를 실행하여 SwiftDate를 설치할 수 있습니다.

pod 'SwiftDate'

만약 Swift Package Manager를 사용하고 있다면, 프로젝트 파일에 SwiftDate를 추가하여 설치할 수 있습니다.

날짜의 월의 마지막 날짜 가져오기

주어진 날짜의 월의 마지막 날짜를 가져오기 위해 다음과 같은 코드를 사용할 수 있습니다.

import SwiftDate

func getLastDayOfMonth(date: Date) -> Int? {
    let calendar = Calendar.current
    
    // 주어진 날짜의 시작(1일)을 구함
    guard let startDate = calendar.date(from: calendar.dateComponents([.year, .month], from: date)) else { return nil }
    
    // 한 달 후의 시작일을 가져옴
    guard let endDate = calendar.date(byAdding: .month, value: 1, to: startDate) else { return nil }
    
    // 한 달 후의 시작일의 하루 전 날짜를 가져옴
    guard let lastDayOfMonth = calendar.date(byAdding: .day, value: -1, to: endDate) else { return nil }
    
    // 일자만 가져옴
    let day = calendar.component(.day, from: lastDayOfMonth)
    
    return day
}

// 사용 예시
let date = Date()
if let lastDayOfMonth = getLastDayOfMonth(date: date) {
    print("원하는 날짜의 월의 마지막 날짜는 \(lastDayOfMonth)입니다.")
} else {
    print("날짜를 가져올 수 없습니다.")
}

위의 코드는 SwiftDate를 사용하여 주어진 날짜의 월의 마지막 날짜의 일자를 가져오는 방법을 보여주고 있습니다. getLastDayOfMonth 함수는 Date 객체를 입력으로 받아서 해당 월의 첫 날을 계산하고, 한 달 후의 시작일을 구한 다음, 하루를 빼서 해당 월의 마지막 날짜를 계산합니다. 최종적으로 월의 마지막 날짜의 일자인 day를 반환합니다.

위의 예시 코드에서는 현재 날짜를 사용하지만, 필요에 따라 다른 날짜를 사용할 수 있습니다.

참고 자료