简体   繁体   中英

How to get the date of previous month matching specified day ? [Swift]

How can I get the date of previous month matching specified day? in Swift

if I have this function getPreviousMonthDate(matchingDay day: Int) -> Date

Examples: following (dd/mm/yyyy)

  • If Today is 25/07/2022 and I call getPreviousMonthDate(matchingDay: 27) : return value would be 27/06/2022 .

  • If Today is 18/04/2022 and I call getPreviousMonthDate(matchingDay: 14) : return value would be 14/03/2022 .

  • If Today is 15/01/2022 and I call getPreviousMonthDate(matchingDay: 16) : return value would be 16/12/2021 .

and so on...

You can use date components as following:

func getPreviousMonthDate(matchingDay day: Int) -> Date {
    let calendar = Calendar.current
    let comps = calendar.dateComponents([.year, .month, .day], from: Date())
    var comps2 = DateComponents()
    comps2.year = comps.year
    comps2.month = comps.month! - 1
    comps2.day = day
    return calendar.date(from: comps2)!
}

I force-unwrapped the date to match your function declaration, I suggest that you deal with the optional dates properly though.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM