Entwickler-Ecke

Sonstiges (Delphi) - Welcher Tag des Jahres???


Franz - Fr 05.07.02 21:59
Titel: Welcher Tag des Jahres???
Servus!!!!
wie kann berechnen welcher Tag des Jahres z. B der 10.2 ist??? (ergebnis=41)


Danke!!!


Visum - Sa 06.07.02 13:51

Hi,
ich hab das so gemacht. Hab leider keine Ahnung, ob man es besser machen kann ;). Das Datum muss hier das Format TT.MM haben.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
function tag:integer;
var monat:integer;

begin
tag:=StrToInt(EdDatum.Text[1]+EdDatum.Text[2]);
monat:=StrToint(EdDatum.Text[4]+EdDatum.Text[5]);

case monat of
2: tag:=tag+31;
3: tag:=tag+31+28;
4: tag:=tag+31+28+31;
5: tag:=tag+31+28+31+30;
6: tag:=tag+31+28+31+30+31;
7: tag:=tag+31+28+31+30+31+30;
8: tag:=tag+31+28+31+30+31+30+31;
9: tag:=tag+31+28+31+30+31+30+31+31;
10: tag:=tag+31+28+31+30+31+30+31+31+30;
11: tag:=tag+31+28+31+30+31+30+31+31+30+31;
12: tag:=tag+31+28+31+30+31+30+31+31+30+31+30;
end;
end;


Visum


Anonymous - Sa 06.07.02 14:06

Visum hat folgendes geschrieben:
Hab leider keine Ahnung, ob man es besser machen kann

Die Funktion versagt spätestens in einem Schaltjahr.

Gruß Tom


Klabautermann - Sa 06.07.02 14:37

Hallo,

auf anhieb fällt mir nichts Besseres ein als das:


Quelltext
1:
2:
3:
4:
5:
6:
7:
function DayOfYear(aDate: tDateTime): Integer;
  VAR
    Jahr, Monat, Tag : WORD;
begin
  DecodeDate(aDate, Jahr, Monat, Tag);
  result := Trunc(aDate -  EncodeDate(Jahr, 1, 1));
end; // Day Of Yeat


Gruß
Klabautermann


Pit - Mo 08.07.02 10:10



damadmax - Di 09.07.02 15:18

Da benutze ich (bei Delphi6) folgende Funktion:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
Die Funktion DayOfTheYear gibt die Anzahl der Tage zwischen dem angegebenen TDateTime-Wert und dem 31. Dezember des vorhergehenden Jahres an.

Unit

DateUtils

Kategorie

Datum/Zeit

function DayOfTheYear(const AValue: TDateTime): Word;

Beschreibung

Mit DayOfTheYear können Sie die Ordinalposition des Tages eines TDateTime-Werts im Jahr ermitteln. Ein TDateTime-Wert, der den 1. Januar bezeichnet, liefert also das Ergebnis 1, das Ergebnis 2 für den 2. Januar usw.


Klabautermann - Di 09.07.02 15:24

Gut zu wissen, dass es soetwas gibt.
In D5 ist die aber noch nicht enthalten (jedenfalls finde ich sie nicht in der hilfe ;))

Gruß
Klabautermann