Not sure if this fits your use case, but this is what works for me. I use NETWORKDAYS to exclude weekends, and then subtract 1 from the result. If you want to exclude holidays, you'll need to put a third parameter after the end date.
=NETWORKDAYS(start_date, end_date)-1
Using this method, if your start and end dates are the same, you will get 0 days as the result. I interpret that as no days have elapsed between start and end, which is valid for my need.