ErrorDeSintaxis

Pequeños fragmentos de código fuente en distintos lenguajes de programación, agrupados por categorías.

Puedes buscar entre los fuentes existentes, o aportar los tuyos.

Pascal: Día de la semana

Saber el día de la semana que corresponde a una fecha

Lenguaje: Pascal (compilador: Turbo Pascal 7)

Categoría: Fecha y hora

(* Fuente procedente de ErrorDeSintaxis.es *)
(* Saber el día de la semana que corresponde *)
(*  a una fecha *)
(* Lenguaje: Pascal *)
(* Compilador: Turbo Pascal 7 *)
(* Nivel: Intermedio *)
(* Disponible desde 17/07/2011 *)
(* Aportado por Nacho *)
(* Autor original: Kelly Small *)
(* Web original: http://www.kd5col.info/swag/DATETIME/0022.PAS.html *)

function LeapYearOffset(M,Y:Word):Integer;
  Begin
  if ((Y mod 400 = 0) or ((Y mod 100 <> 0) and (Y mod 4 = 0)))
        and (M > 2)
    then LeapYearOffset := 1
    else LeapYearOffset := 0
  End;
 
Function DaysinMonth(dMonth,dYear:Word):Byte;
  Begin
  case dMonth of
    1,3,5,7,8,10,12 : DaysInMonth := 31;
    4,6,9,11        : DaysInMonth := 30;
    2               : DaysInMonth := 28 + LeapYearOffset(3,dYear)
    End;
  End;
 
Function FindDayOfWeek(Day, Month, Year: Integer) : Byte;
var
  century, yr, dw: Integer;
begin
  if Month < 3 then
  begin
    Inc(Month, 10);
    Dec(Year);
  end
  else
     Dec(Month, 2);
  century := Year div 100;
  yr := year mod 100;
  dw := (((26 * month - 2) div 10) + day + yr + (yr div 4) +
    (century div 4) - (2 * century)) mod 7;
  if dw < 0 then FindDayOfWeek := dw + 7
  else FindDayOfWeek := dw;
end;