Avatar billede silden Nybegynder
01. maj 2001 - 10:55 Der er 8 kommentarer og
1 løsning

Ugenummer?

Er der en som kan give mig et eks. på hvordan
man beregner hvilket uge(nummer) en bestemt dato er i
Avatar billede well_r Nybegynder
01. maj 2001 - 11:00 #1
jeg er ikke til delphi..meeen..prøv sådan..
få fat i hvor langt inde i året dagen er .. og så div det med 7? eller sådan noget ;o)
Jeg er ikke sikker..derfor dette er en kommentar ;o)
Avatar billede martinlind Nybegynder
01. maj 2001 - 11:01 #2
Her er det du har brug for :

function TStdDato.StartOfWeekOne( Year : Word ) : TDateTime;
const
  NoAdj : array[1..7] of Byte = (6,0,1,2,3,4,5);
VAR
  D,M : Word;
  Nd  : TDateTime;
begin
  Nd := EnCodeDate(Year,1,1);
  Result := Nd-NoAdj[DayOfWeek(Nd)];
  if not ( DayOfWeek(Nd) in [2..5] ) then Result := Result+7;
end;

function TStdDato.WeeksOfYear( Year : Word ) : Integer;
VAR
  D,M : Word;
  Nd  : TDateTime;
begin
  Nd := StartOfWeekOne(Year+1)-StartOfWeekOne(Year);
  Result := (StrToInt(FormatFloat(\'0\',Nd)) div 7);
end;

function TStdDato.WeekNo( Dato : TDateTime ) : Integer;
VAR
  Y,D,M : Word;
begin
  DeCodeDate(Dato,Y,M,D);
  if Dato < StartOfWeekOne(Y) then Result := WeeksOfYear(Y-1)
  else
  if Dato >= StartOfWeekOne(Y+1) then Result := 1
  else
  Result := (StrToInt(FormatFloat(\'0\',Dato-StartOfWeekOne(Y))) div 7)+1;
end;

function TStdDato.IsSkudAAR( Year : Word ) : Boolean;
VAR
  M,D : Word;
  Dt : TDateTime;
begin
  M := 2;
  D := 28;
  Dt := EnCodeDate(Year,M,D);
  Dt := Dt+1;
  DeCodeDate(Dt,Year,M,D);
  Result := (( M = 2 ) and ( D = 29 ));
end;

/Martin
Avatar billede silden Nybegynder
01. maj 2001 - 12:19 #3
Mange tak, det var det jeg søgte
  S Wigh
Avatar billede martinlind Nybegynder
01. maj 2001 - 12:25 #4
Det var jo det jeg tænkte, det er lavet efter Almanaken om den Gregorianske kalender, som er den vi kører med i DK, og det skulle virke, har testet en del på det ( også testet for 53 uger )

/Martin
Avatar billede borrisholt Novice
01. maj 2001 - 13:10 #5
Lige et lille men .. Borland har allerede en funktion til at finde ud af om det er skudår: Den ligger i Sysutils og hedder IsLeapYear; Den er i øvrigt implemteret som følger :

function IsLeapYear(Year: Word): Boolean;
begin
  Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0));
end;


Jens B
Avatar billede martinlind Nybegynder
01. maj 2001 - 13:14 #6
JB >> Ved det godt, men nu fik jeg lige det hele med ( gammel kode )

/Martin
Avatar billede borrisholt Novice
01. maj 2001 - 13:17 #7
Jeg ville bare lige nævne det fordi Borlands kode er langt bedere (læs hurtigere)

Jens B
Avatar billede martinlind Nybegynder
01. maj 2001 - 13:20 #8
Yeps.
Avatar billede jaweni Nybegynder
17. marts 2008 - 15:52 #9
Hej, søgte det samme som silden (maj 2001)og fik bid.
Imidlertid er martinlind's svar pr. 01/05/2001 ikke
uptodate, hvad angår brug af kalender i DK.
Check venligst flg. link:
http://www.rundetaarn.dk/dansk/observatorium/gregory.html
Mvh. JK-E
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester