Skip to content

Instantly share code, notes, and snippets.

@ProgramAlgo
Created December 25, 2017 03:01
Show Gist options
  • Save ProgramAlgo/2ab2e9bbddd895c79ee55c06a6be813c to your computer and use it in GitHub Desktop.
Save ProgramAlgo/2ab2e9bbddd895c79ee55c06a6be813c to your computer and use it in GitHub Desktop.
remind birthday one month
func checkDates(birthdays: [Date], today: Date, days: Int) -> Set<Date> {
    let calendar = Calendar.current
    let thisYear = calendar.component(.year, from: today)
    var celebrateList = Set<Date>()
    var datesToCheck: ClosedRange<Date> {
        return today...today.addingTimeInterval(3600*24*Double(days))
    }
    
    for birthday in birthdays {
        var dateCompenents = calendar.dateComponents([.year, .month, .day], from: birthday)
        dateCompenents.year = thisYear
        let birthdayOfThisYear = calendar.date(from: dateCompenents)
        if let birthdayOfThisYear = birthdayOfThisYear, datesToCheck.contains(birthdayOfThisYear) {
            celebrateList.insert(birthday)
        }
    }
    
    return celebrateList
}
@AndreaVEH
Copy link

  1. change datesToCheck from computed variable to immutable stored variable.
  2. check days to ensure it to be equal of greater than 0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment