più che algoritmo direi che devi avere una tabella con 365 record e, fondamentalmente, due campi
giorno (testo) indcica il giorno, mese, anno, o come ti pare
lavorativo (booleano)
che ti compili a mano
naturalmente vale per un sngolo anno
altrimenti fallo in via programmatica col linguaggio che usi in genere bsandoti sulla data del server
oppure, che è meglio, se ci dici a cosa ti serve magari troviamo la soluzione meno dolorosa