You can use the Business Hours object in the salesforce to attain this functionality.
Salesforce Documentation Link for Business HoursSalesforce Documentation Link for Business Hours
Here is one example for using it -
Date txnDate = System.today();
Date systemDate = txnDate.addDays(10);
Integer holidaysCount = 0;
BusinessHours bh;
List<BusinessHours> temp = [SELECT ID, Name, IsDefault, IsActive From BusinessHours
WHERE IsDefault = true
OR Name = 'BANK'];
for (BusinessHours b : temp) {
if (b.IsDefault) {
bh = b;
}
}
while (txnDate != systemDate) {
Datetime now = Datetime.newInstance(txnDate.year(), txnDate.month(), txnDate.day(), 0, 0, 0);
Boolean isHoliday = !BusinessHours.isWithin(bh.Id, now);
System.debug('The value of isHoliday is : '+isHoliday);
if (isHoliday) {
holidaysCount++;
}
txnDate = txnDate.addDays(1);
}
System.debug('The holidays are : '+holidaysCount);