If you are trying to track open case time, you should look at Business Hours and Holidays. From the API Docs, "This object is used to specify the business hours of your support organization. Escalation rules are run only during these hours. If business hours are associated with any Holiday records, then business hours and escalation rules associated with business hours are suspended during the dates and times specified as holidays."
For calculating case age, there is a feature you can request, but it looks like it is only a report field, and it is not clear if it respects holidays or not (worth asking if you request the feature). That link also gives a formula for calculating case age in hours as a formula field on case, although frankly it's a beast, and doesn't help with holidays.
If you decide to go with a batch job, you could query the Holiday object to determine if it is a holiday, but note that you must maintain holidays for your company (via setup, see link above), and the object is a little complex if you use recurring holidays. I'm not away of an Apex class to simplify interaction with the Holiday object.