I don't like the loop's guard. It's too precise. What if you want to calculate the difference in days between 2011-08-08 09:00 and 2011-08-08 18:00? Your code would result in one day, whereas it should be 0 days.
It is impossible to say if this is good or bad until you define what is a business day and what isn't. I work in healthcare, so EVERY day is a business day. Do you need to account for national holidays?
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
I wrote an entire library at work (which means I can't share the code...) that can calculate the difference in both days and minutes between any two timestamps, including opening and closing times and holidays - all configurable of course. It wasn't easy though.