Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jrcardozo

[Resolvido] Calcular feriados fixos e móveis

Recommended Posts

Abaixo o código completo. Quero deixar claro que não sou autor, apenas peguei um código em VB e adaptei para asp, espero que gostem. Os créditos são do autor que está descrito no código.

 

Fonte:http://www.geocities.com/cantinhodemais/modulos.htm

 

<%Option Explicitdim intAnointAno = year(date)' SubRotina de feriados moveis Adaptada por Rogerio Olimpio a partir de uma' rotina em Delphi de Marcio Castilho - Revista delphi Journal' SubRotina Datas comemorativas e Feriados Fixos - Rogerio Olimpio / Juvenal' Revisao: 16/05/2001' ====================================================================='Feriados móveis'------------------------------------------------------Const frCarnaval = 1		'terca de carnavalConst frQuartaCinzas = 2	'quarta de cinzasConst frSextaSanta = 3	  'sexta feira santa / paixao de cristoConst frCorpusChristi = 4   'corpus christiConst frPascoa = 5		  'pascoa'Datas comemorativas móveis'------------------------------------------------------Const frDiaDasMaes = 6	  'dia das maesConst frDiaDosPais = 7	  'dia dos pais'Feriados fixos'------------------------------------------------------Const frConfrUniv = 8	   'CONFR.UNIVERSALConst frAnivSaoPaulo = 9	'ANIVERSARIO DE SAO PAULOConst frTiradentes = 10	 'TIRADENTESConst frDiaTrabalho = 11	'DIA DO TRABALHOConst frAnivOsasco = 12	 'ANIVERSARIO DE OSASCO (onde fica minha empresa)Const frIndepBrasil = 13	'INDEP. DO BRASILConst frNossaSra = 14	   'N. Sra. APARECIDAConst frFinados = 15		'FINADOSConst frProcRepublica = 16  'PROC. DA REPUBLICAConst frNatal = 17		  'NATALPrivate Function CalcPascoa(AAno)Dim r1, r2, r3, r4, r5 Dim vj, vm, vd Dim FPascoa r1 = AAno Mod 19r2 = AAno Mod 4r3 = AAno Mod 7r4 = (19 * r1 + 24) Mod 30r5 = (6 * r4 + 4 * r3 + 2 * r2 + 5) Mod 7FPascoa = DateSerial(AAno, 3, 22)FPascoa = FPascoa + r4 + r5vj = Year(FPascoa)vm = Month(FPascoa)vd = Day(FPascoa)Select Case vdCase 26	FPascoa = DateSerial(AAno, 4, 19)Case 25	If r1 > 10 Then FPascoa = DateSerial(AAno, 4, 18)End SelectCalcPascoa = FPascoaEnd FunctionFunction CalculaFeriado(AAno, Atipo)If Atipo < 1 Or Atipo > 17 Then	response.write("O tipo de feriado " & Atipo & " não é aceito.Escolha uma das opções:" & vbCrLf & vbCrLf & " 1 - Carnaval " & vbCrLf & " 2 - Quarta-Feira " & _				"de Cinzas " & vbCrLf & " 3 - Sexta-Feira Santa " & vbCrLf & " 4 - Corpus Christi " & vbCrLf & " 5 - Páscoa " & vbCrLf & " 6 - Dia das Maes " & vbCrLf & " 7 - Dia dos Pais " & vbCrLf & _				" 8 - Confr.Universal" & vbCrLf & " 9 - Aniversario de Sao Paulo" & vbCrLf & "10 - Tiradentes" & vbCrLf & "11 - Dia do Trabalho" & vbCrLf & "12 - Aniversario de Osasco" & vbCrLf & "13 - Indep. do Brasil" & vbCrLf & "14 - N. Sra. Aparecida" & vbCrLf & "15 - Finados" & vbCrLf & "16 - Proc. da Republica" & vbCrLf & "17 - Natal")	Exit FunctionEnd IfDim Aux Dim tmpDiaDim ContaDom Dim DiaSem If Atipo < 6 Then Aux = CalcPascoa(AAno)Select Case AtipoCase frCarnaval	Aux = Aux - 47Case frQuartaCinzas	Aux = Aux - 46Case frSextaSanta	Aux = Aux - 2Case frCorpusChristi	Aux = Aux + 60Case frPascoa	Aux = AuxCase frDiaDasMaes	ContaDom = 0	tmpDia = DateSerial(AAno, 5, 1)	Do While tmpDia < DateSerial(AAno, 5, 30)		If WeekDay(tmpDia) = vbSunday Then			ContaDom = ContaDom + 1			If ContaDom = 2 Then				Aux = tmpDia				Exit Do			End If		End If		tmpDia = tmpDia + 1	LoopCase frDiaDosPais	ContaDom = 0	tmpDia = DateSerial(AAno, 8, 1)	Do While tmpDia < DateSerial(AAno, 8, 30)		If WeekDay(tmpDia) = vbSunday Then			ContaDom = ContaDom + 1			If ContaDom = 2 Then				Aux = tmpDia				Exit Do			End If		End If		tmpDia = tmpDia + 1	LoopCase frConfrUniv		Aux = DateSerial(AAno, 1, 1)Case frAnivSaoPaulo		Aux = DateSerial(AAno, 1, 25)Case frTiradentes		Aux = DateSerial(AAno, 4, 21)Case frDiaTrabalho		Aux = DateSerial(AAno, 5, 1)Case frAnivOsasco		Aux = DateSerial(AAno, 6, 13)Case frIndepBrasil		Aux = DateSerial(AAno, 9, 7)Case frNossaSra		Aux = DateSerial(AAno, 10, 12)Case frFinados		Aux = DateSerial(AAno, 11, 2)Case frProcRepublica		Aux = DateSerial(AAno, 11, 15)Case frNatal		Aux = DateSerial(AAno, 12, 25)End SelectSelect Case WeekDay(Aux)Case vbSunday	DiaSem = "Domingo"Case vbMonday	DiaSem = "Segunda-feira"Case vbTuesday	DiaSem = "Terça-feira"Case vbWednesday	DiaSem = "Quarta-feira"Case vbThursday	DiaSem = "Quinta-feira"Case vbFriday	DiaSem = "Sexta-feira"Case vbSaturday	DiaSem = "Sábado"End SelectCalculaFeriado = CStr(Aux) & " " & DiaSemEnd Functionresponse.Write("Páscoa - "&CalculaFeriado(intAno,frPascoa))response.Write("<br>")response.Write("Carnaval - "&CalculaFeriado(intAno,frCarnaval))response.Write("<br>")response.Write("Quarta-Feira de cinzas - "&CalculaFeriado(intAno,frQuartaCinzas))response.Write("<br>")response.Write("Sexta-feira Santa - "&CalculaFeriado(intAno,frSextaSanta))response.Write("<br>")response.Write("Corpus Christ - "&CalculaFeriado(intAno,frCorpusChristi))response.Write("<br>")response.Write("Dia das Mães - "&CalculaFeriado(intAno,frDiaDasMaes))response.Write("<br>")response.Write("Confraternização Universal - "&CalculaFeriado(intAno,frConfrUniv))response.Write("<br>")response.Write("Aniversário de São Paulo - "&CalculaFeriado(intAno,frAnivSaoPaulo))response.Write("<br>")response.Write("Tiradentes - "&CalculaFeriado(intAno,frTiradentes))response.Write("<br>")response.Write("Dia do Trabalho - "&CalculaFeriado(intAno,frDiaTrabalho))response.Write("<br>")response.Write("Aniversário de Osasco - "&CalculaFeriado(intAno,frAnivOsasco))response.Write("<br>")response.Write("Independência do Brasil - "&CalculaFeriado(intAno,frIndepBrasil))response.Write("<br>")response.Write("Nossa Senhora - "&CalculaFeriado(intAno,frNossaSra))response.Write("<br>")response.Write("Proclamação da República - "&CalculaFeriado("2006",frProcRepublica))response.Write("<br>")response.Write("Finados - "&CalculaFeriado(intAno,frFinados))response.Write("<br>")response.Write("Natal - "&CalculaFeriado(intAno,frNatal))%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.