jeg har for 10 år siden lavet noget asp-kode der beregner alle danske helligdage. Lavet til en blomsterbutik, så advent og morsdag er med - de skal lige pilles ud.
start med at finde antal dage / timer /minutter
med den kan du loope fra fra- til til-dato og tjekke om det er en helligdag - hvis ja, så fratræk 1 dag i resultat.
koden er her (skal modificeres lidt til excel)
----------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<title>Bare end kalender...</title>
<SCRIPT language=JavaScript>
var browserID = "n";
if (navigator.appName.indexOf("Microsoft")>=0){browserID="i";}
</script>
</head>
<body>
<%
sidenavn = LCase(Request.Servervariables("SCRIPT_NAME"))
Function getdaysinmonth(strmonth,stryear)
datoen=cdate("01-" & strmonth & "-" & stryear)
datoen=dateadd("m",1,datoen)
datoen=dateadd("d",-1,datoen)
getDaysInMonth=datepart("d",datoen)
End Function
Function SkrivStortBogstav(tekst)
SkrivStortBogstav=ucase(left(tekst,1)) & lcase(mid(tekst,2,len(tekst)))
End Function
Function Helligdage(strdato)
aar=CInt(datepart("yyyy",strdato)) 'skal være mellem 1901 & 2199
m= array(0,1,4,4,0,2,5,0,3,6,1,4,6)
gyldental=(aar+1) mod 19
if gyldental=0 then gyldental=19
epakt= ((gyldental-1)*11)mod 30
if aar>1899 and aar<2200 then epakt=epakt-1
epakt=epakt mod 30
DagTilFj=80
if gyldental=6 or gyldental=17 then DagTilFj=81
alder=(epakt+DagTilFj) mod 30
if alder<=13 then antaldg=13-alder
if alder>13 then antaldg=43-alder
fuldmaane=21+antaldg
if fuldmaane<=31 then
dato=fuldmaane
maaned=3
else
dato=fuldmaane-31
maaned=4
end if
korrektion=(5+aar+aar\4-aar\100+aar\400) mod 7
if aar/4=int(aar/4) and (maaned=1 or maaned=2) then
if aar/100<>int(aar/100) then korrektion=korrektion-1
if aar/100 =int(aar/100) then korrektion=korrektion-1
end if
u=(dato+m(maaned)+korrektion)mod 7
paaske=dato+7-u
if paaske>31 then
paaske=paaske-31
maaned=4
end if
str = paaske & "-" & maaned &"-"& aar
datoto = cdate("24-12-" & datepart("yyyy",strdato))
juldag = weekday(datoto, vbMonday)
soendag = dateadd("d",0-juldag,datoto)
if strdato = cdate(str)-49 then
Helligdage = "Fastelavn"
elseif strdato = cdate(str)-7 then
Helligdage = "Palmesøndag"
elseif strdato = cdate(str)-3 then
Helligdage = "Skærtorsdag"
elseif strdato = cdate(str)-2 then
Helligdage = "Langfredag"
elseif strdato = cdate(str) then
Helligdage = "Påskedag"
elseif strdato = cdate(str)+1 then
Helligdage = "2. Påskedag"
elseif strdato = cdate(str)+26 then
Helligdage = "St. Bededag"
elseif strdato = cdate(str)+39 then
Helligdage = "Kr. Himmelfartsdag"
elseif strdato = cdate(str)+49 then
Helligdage = "Pinsedag"
elseif strdato = cdate(str)+50 then
Helligdage = "2. Pinsedag"
elseif strdato = cdate("1-1-" & datepart("yyyy",strdato)) then
Helligdage = "Nytårsdag"
elseif strdato = cdate("5-6-" & datepart("yyyy",strdato)) then
Helligdage = "Grundlovsdag / Fars dag"
elseif strdato = cdate("24-12-" & datepart("yyyy",strdato)) then
Helligdage = "Juleaften"
elseif strdato = cdate("25-12-" & datepart("yyyy",strdato)) then
Helligdage = "Juledag"
elseif strdato = cdate("26-12-" & datepart("yyyy",strdato)) then
Helligdage = "2. Juledag"
elseif strdato = cdate("31-12-" & datepart("yyyy",strdato)) then
Helligdage = "Nytårsaften"
elseif strdato = soendag then
Helligdage = "4. søndag i Advent"
elseif strdato = dateadd("ww",-1,soendag) then
Helligdage = "3. søndag i Advent"
elseif strdato = dateadd("ww",-2,soendag) then
Helligdage = "2. søndag i Advent"
elseif strdato = dateadd("ww",-3,soendag) then
Helligdage = "1. søndag i Advent"
else
Helligdage = ""
end if
End Function
strtoday = Date()
stryear = Year(strtoday)
strmonth = Month(strtoday)
If Request("month") <> "" Then strmonth = request("month")
If Request("year") <> "" Then stryear = request("year")
strdaysinmonth = getdaysinmonth(strmonth,stryear)
%>
<table border="0" bgcolor="#C0C0C0" width="490" height="145" style="border: 1px solid #000000;">
<tr>
<td>
Kalender for <Select size="1"
id="months"
name="months"
onchange="if (browserID=='n'){months = document.getElementById('months'); years = document.getElementById('years');};location.href ='<%=sidenavn%>?month='+months.value+'&year='+years.value">
<%
For i = 1 To 12
Response.Write "<option value=" & i
If CInt(strmonth) = i Then Response.Write " SELECTED"
Response.Write "> " & SkrivStortBogstav(MonthName(i,false))
Response.Write " </option>" & vbCrLf
Next
%>
</Select>
<Select size="1"
name="years"
id="years"
onchange="if (browserID=='n'){months = document.getElementById('months'); years = document.getElementById('years');};location.href ='<%=sidenavn%>?month='+months.value+'&year='+years.value">
<%
for i = CInt(stryear)-10 to CInt(stryear)+10
Response.Write "<option value=" & i
If CInt(stryear) = i Then Response.Write " SELECTED"
Response.Write ">" & i & "</option>" & vbCrLf
next
%>
</Select>
</td><td align="right">
<a href="<%=sidenavn%>?month=<%=datepart("m",strtoday)%>&year=<%=datepart("yyyy",strtoday)%>"
title="Vis aktuel måneds kalender"
onMouseOver="window.status=''; return true"
onMouseOut="window.status=''"> DD </a>
</td>
</tr>
<tr>
<td width="280" align="left" valign="top">
<table cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" width="100%" height="100%" style="border: 1px solid #000000;">
<tr bgcolor="#CFCFCF">
<%
for i=1 to 7
response.write "<td align=""center"" width=""40""><b>"
if i=7 then response.write "<font color=""#FF0000"">"
response.write SkrivStortBogstav(left(weekdayname(i,false,vbMonday),3))
if i=7 then response.write "</font>"
response.write "</b></td>"
next
%>
</tr>
<tr bgcolor="#CFCFCF"><td colspan="7"><hr></td></tr>
<!-- Kalender laves her -->
<%
datoen = CDate("01-" & strmonth & "-" & stryear)
firstday = Weekday(datoen, vbMonday)
aktday = 0
if (CInt(strmonth)=CInt(Month(strtoday))) and (CInt(stryear)=CInt(Year(strtoday))) then aktday = CInt(datepart("d",date))
tomme=firstday-1
if tomme>0 then
response.write "<tr>" & vbCrLf
lastmonth=cint(strmonth)-1
lastyear=cint(stryear)
if lastmonth=0 then
lastmonth=12
lastyear=lastyear-1
end if
for i=1 to tomme
response.write "<td align=""center"" bgcolor=""#C0C0C0"" "
response.write "onclick=""location.href ='" & sidenavn & "?month=" & lastmonth & "&year=" & lastyear & "'"""
response.write "><font color=""#808080"">"
response.write datepart("d",dateadd("d",i-(tomme+1),datoen))
response.write "</font></td>" & vbCrLf
next
end if
mddag=9-firstday
for i=1 to strdaysinmonth
if i=aktday then
strItToday = "<td align=""center"" style=""border: 1px solid #000000;""><font color=""#000000"">"
else
strItToday = "<td align=""center""><font color=""#000000"">"
end if
if (7+i-mddag) MOD 7 =6 then
if i=aktday then
strItToday = "<td align=""center"" bgcolor=""#FF8080"" style=""border: 1px solid #000000;""><font color=""#000000"">"
else
strItToday = "<td align=""center"" bgcolor=""#FF8080""><font color=""#000000"">"
end if
end if
datoen = CDate(i & "-" & strmonth & "-" & stryear)
strtxt = Helligdage(datoen)
if CInt(strmonth)=5 and i>7 and i<15 and (7+i-mddag) MOD 7 = 6 then
if strtxt="" then
strtxt = "Mors dag"
else
strtxt = strtxt & " / Mors dag"
end if
end if
if len(strtxt) > 0 then
if i=aktday then
strItToday = "<td align=""center"" bgcolor=""#FF8080""style=""border: 1px solid #000000;"" onmouseover=""if (browserID=='n'){texter = document.getElementById('texter');}; texter.innerHTML='" & strtxt & "';"" onmouseout=""if (browserID=='n'){texter = document.getElementById('texter');}; texter.innerHTML='';""><font color=""#000000"">"
else
strItToday = "<td align=""center"" bgcolor=""#FF8080"" onmouseover=""if (browserID=='n'){texter = document.getElementById('texter');}; texter.innerHTML='" & strtxt & "';"" onmouseout=""if (browserID=='n'){texter = document.getElementById('texter');}; texter.innerHTML='';""><font color=""#000000"">"
end if
end if
if (i-mddag) MOD 7 = 0 then response.write "<tr>" & vbCrLf
response.write strItToday & i & "</td>" & vbCrLf
if (i-mddag) MOD 7 = 6 then response.write "</tr>" & vbCrLf
next
if (firstday+strdaysinmonth-1) MOD 7 > 0 then
nextmonth=cint(strmonth)+1
nextyear=cint(stryear)
if nextmonth=13 then
nextmonth=1
nextyear=nextyear+1
end if
for i=1 to 7-((firstday+strdaysinmonth-1) MOD 7)
response.write "<td align=""center"" bgcolor=""#C0C0C0"""
response.write "onclick=""location.href ='" & sidenavn & "?month=" & nextmonth & "&year=" & nextyear & "'"""
response.write "><font color=""#808080"">" & i & "</font></td>" & vbCrLf
next
response.write "</tr>"
end if
%>
<!-- Kalender slut her -->
</table>
</td>
<td valign="top" width="190">
<table cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" style="border: 1px solid #000000;" height="100%" width="100%">
<tr bgcolor="#CFCFCF">
<td><b>Dagens note:</b></td>
</tr>
<tr bgcolor="#CFCFCF"><td><hr></td></tr>
<tr>
<td height="100%" valign="top"><div id="texter" style="width:99%; height:99%;"></div></td>
</tr>
</table>
</td>
</tr>
</table>
</body></html>