Search code examples
swiftcalendarfscalendar

How to hide next day with FSCalendar based on week


Hi I want to hide the next business day, if user registration date and current date both are same. I need to hide next working day. Sunday and Saturday are holidays.

I write code following if user is register on Friday I need to hide Monday, how to resolve this problem.

I write like this how to hide businessday

func calendar(_ calendar: FSCalendar, shouldSelect date: Date, at monthPosition: FSCalendarMonthPosition) -> Bool {


        let joingdate = "2019-01-30" //modeldata.joindate
        let currentdate = date.toString(dateFormat: "yyyy-MM-dd")
        let currentDate = date
        let currentdayweek = date.toString(dateFormat: "EEEE")
        if joingdate == currentdate
        {
            if currentdayweek == "Friday"{
                let businessday = Calendar.current.date(byAdding: .day, value: 3, to: currentDate)
                return false
            }
            else if currentdayweek == "Saturday"{

                let businessday = Calendar.current.date(byAdding: .day, value: 2, to: currentDate)
                return false
            }
            else if  currentdayweek == "Sunday"{
                let businessday = Calendar.current.date(byAdding: .day, value: 1, to: currentDate)
                return false
            }
            else
            {
                let businessday = Calendar.current.date(byAdding: .day, value: 1, to: currentDate)
                return false
            }
        }
}

Solution

  • func minimumDate(for calendar: FSCalendar) -> Date {
            let formatter = DateFormatter()
            formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
            let myString = formatter.string(from: Date())
            let yourDate = formatter.date(from: myString)
            formatter.dateFormat = "yyyy-MM-dd"
            let strCurrentDate = formatter.string(from: yourDate!)
    
            var addDay = 0
            if let model = modeldata{
                if let joiningdate = "2019-01-31"
                {
                    if strCurrentDate == joiningdate
                    {
                        addDay = 2
                    }
    
                    let currentdayweek = yourDate!.toString(dateFormat: "EEEE")
    
                    if currentdayweek == "Friday"{
                        addDay = 4
                    }
                    else if currentdayweek == "Saturday"{
    
                        addDay = 3
                    }
                    else if  currentdayweek == "Sunday"{
    
                        addDay = 2
                    }
                }
            }
    
            let tomorrow = Calendar.current.date(byAdding:
                .day, // updated this params to add hours
                value: addDay,
                to: formatter.date(from: strCurrentDate)!)
    
            return tomorrow!
        }  
    }