Well, there's no "common list of holidays". It depends on country (national, public holidays) and religion. See:
National day - Wikipedia[
^].
The easiest way to detect if current day is a holiday, is to define a list of them. Note that some holidays are dependent of Easter...
Sub Main
Dim startDate As DateTime = New DateTime(2019,1,1)
Dim ThisYear As List(Of KeyValuePair(Of DateTime, Boolean)) = Enumerable.Range(0, 365) _
.Select(Function(x) New KeyValuePair(Of DateTime, Boolean)(startDate.AddDays(x), IsHoliday(startDate.AddDays(x)))) _
.ToList()
End Sub
Function Easter(lyear As Long) As DateTime
Dim C As Long, N As Long, K As Long, i As Long, J As Long, L As Long, M As Long, D As Long
C = lyear \ 100
N = lyear - 19 * (lyear \ 19)
K = (C - 17) \ 25
i = C - C \ 4 - (C - K) \ 3 + 19 * N + 15
i = i - 30 * (i \ 30)
i = i - (i \ 28) * (1 - (i \ 28) * (29 \ (i + 1)) * ((21 - N) \ 11))
J = lyear + lyear \ 4 + i + 2 - C + C \ 4
J = J - 7 * (J \ 7)
L = i - J
M = 3 + (L + 40) \ 44
D = L + 28 - 31 * (M \ 4)
Return New DateTime(lyear, M, D)
End Function
Function IsHoliday(ByVal thisday As DateTime) As Boolean
Dim holidays As List(Of DateTime) = New List(Of DateTime)
holidays.Add(New DateTime(thisday.Year, 1, 1))
holidays.Add(New DateTime(thisday.Year, 1, 6))
holidays.Add(Easter(thisday.Year))
holidays.Add(Easter(thisday.Year).AddDays(1))
holidays.Add(Easter(thisday.Year).AddDays(49))
holidays.Add(New DateTime(thisday.Year, 5, 1))
holidays.Add(New DateTime(thisday.Year, 5, 3))
holidays.Add(Easter(thisday.Year).AddDays(60))
holidays.Add(New DateTime(thisday.Year, 8, 15))
holidays.Add(New DateTime(thisday.Year, 11, 1))
holidays.Add(New DateTime(thisday.Year, 12, 25))
holidays.Add(New DateTime(thisday.Year, 12, 26))
Return holidays.Contains(thisday)
End Function
Note:
Easter
function looks ugly, but works pefect!