You will probably need to script it but you could set up a very elaborate calculation too.
Look at the date functions in the help you can determine a number of things with them.
You can also substring out Month Year Day etc to determine if the addition of a number of days/months will roll into the next month/year
If you add a number to a date field it adds days so you could use DayofWeek((datefield + $days) For days you could use a case statement or sub script to pass in a value of 28,29,30 or 31 based on the datefields month. Month (Datefield)
You can use case statements to deal with the results of the day of the week and add or subtract a day or more.
You can get very complex with this even finding available appointment dates/times.