Is there a way to have a cron job automatically be rescheduled due to a special circumstance?

For a simplistic example, a holiday occurs and the payroll processing needs to run a day later than what is scheduled in cron

Can this be down through a script, config, environment variable, or would someone need to go in and manually make the change?