Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Datumsdifferenz berechnen? (https://www.delphipraxis.net/178646-datumsdifferenz-berechnen.html)

Sheila Mertens 20. Jan 2014 08:59

AW: Datumsdifferenz berechnen?
 
Eine methode um die Tage zwischen zwei verschiedene Datums zu berechnen ist, die zwei Datums zuerst um zu setzen in Julianischer Datum. Dazu sind auf dem Internet verschiedene Algoritmen zu finden.

Jumpy 20. Jan 2014 09:34

AW: Datumsdifferenz berechnen?
 
Zitat:

Zitat von sx2008 (Beitrag 1244435)
Falls nur die Ferien im aktuellen Jahr berücksichtigt werden, kann man das Schaltjahrthema natürlich ignorieren.

Nee, denke das bleibt schon ein Thema. Wenn man am 5.1. wissen will wie lange es noch bis zu den Osterferien am 12.3. ist, wäre die Info Schaltjahr oder nicht schon wichtig.

Sheila Mertens 20. Jan 2014 15:25

AW: Datumsdifferenz berechnen?
 
Ich hatte heute Morgen nicht viel Zeit, also jetzt ein Vorbild zur Berechnung Julianischer Datum.

Die Procedure JulianDate braucht als Input: Jahr, Monat und Tag. Der Tag muss aber dezimal eingegeben werden, dazu dient die Function DHMStoDReal. Naturlich kann mann die Berechnung auch zuruckarbeiten, dazu dient die Procedure DateFromJD, die den Tag wieder in Dezimal abliefert. Um dies wieder um zu setzen in Tag, Stunden, Minuten und Sekunden bracht mann DRealToDHMS.

(Code entfernt)

himitsu 20. Jan 2014 15:34

AW: Datumsdifferenz berechnen?
 
Zitat:

Zitat von Sheila Mertens (Beitrag 1244495)
Eine methode um die Tage zwischen zwei verschiedene Datums zu berechnen ist, die zwei Datums zuerst um zu setzen in Julianischer Datum. Dazu sind auf dem Internet verschiedene Algoritmen zu finden.

Anders ausgedrückt, man braucht einen Datums-Typ, welcher die Zeit in nur einer Einheit (Tage, Stunden oder Sekunden) in Relation zu einem festen Datum liefert.

Ob es nun ein Julian-Date ist, oder ein TDateTime oder ein Unit-Timestamp, ist dabei egal.
Das Ergbnis sind zwei einzelne Zahlen, mit denen man direkt rechnen kann. Und zum Schluß muß man das Ergebnis eventuell nur noch in eine Zeiteinheit umrechnen, welche man benötigt.
Für viele Datums-Zeitformate gibt es im Delphi schon fertige Umrechnungsfunktionen.



Man kann das natürlich auch manuell direkt über die drei Werte Jahr/Monat/Tag berechnen, aber muß da natürlich die Anzahl der Tage pro Monat und die Schaltjahre entsprechend berücksichtigen.

baumina 20. Jan 2014 15:40

AW: Datumsdifferenz berechnen?
 
Zitat:

Zitat von Sheila Mertens (Beitrag 1244564)
Ich hatte heute Morgen nicht viel Zeit, also jetzt ein Vorbild zur Berechnung Julianischer Datum.

Oder man schaut sich die Sourcen in DateUtils.pas an. Z.B.:

Delphi-Quellcode:
function DateTimeToJulianDate(const AValue: TDateTime): Double;
var
  LYear, LMonth, LDay: Word;
begin
  DecodeDate(AValue, LYear, LMonth, LDay);
  Result := (1461 * (LYear + 4800 + (LMonth - 14) div 12)) div 4 +
            (367 * (LMonth - 2 - 12 * ((LMonth - 14) div 12))) div 12 -
            (3 * ((LYear + 4900 + (LMonth - 14) div 12) div 100)) div 4 +
            LDay - 32075.5 + Abs(Frac(AValue));
end;

Mikkey 20. Jan 2014 15:56

AW: Datumsdifferenz berechnen?
 
Zitat:

Zitat von baumina (Beitrag 1244568)
Zitat:

Zitat von Sheila Mertens (Beitrag 1244564)
Ich hatte heute Morgen nicht viel Zeit, also jetzt ein Vorbild zur Berechnung Julianischer Datum.

Oder man schaut sich die Sourcen in DateUtils.pas an. Z.B.:

... oder man strengt eine Minute lang seine kleinen grauen Zellen an, um dabei nicht die Aufgabenstellung aus den Augen zu verlieren:

Es geht hier ums Selbermachen!

@Sheila: Nichts für ungut, aber dieser "Algorithmus ist overkill für die gestellte Aufgabe (Er soll in die Zukunft rechnen, nicht zurück ins 16. Jahrhundert), außerdem strotzt er von Antipatterns. Zu gebrauchen ist er somit allenfalls als schlechtes Beispiel.

p80286 20. Jan 2014 16:42

AW: Datumsdifferenz berechnen?
 
Zitat:

Zitat von Mikkey (Beitrag 1244570)
@Sheila: Nichts für ungut, aber dieser "Algorithmus ist overkill für die gestellte Aufgabe (Er soll in die Zukunft rechnen, nicht zurück ins 16. Jahrhundert), außerdem strotzt er von Antipatterns. Zu gebrauchen ist er somit allenfalls als schlechtes Beispiel.

Wie wäre es, konkret die Schwachstellen zu benennen?

Gruß
K-H

Sheila Mertens 20. Jan 2014 19:10

AW: Datumsdifferenz berechnen?
 
Ach, ich versteh' schon, nicht 'danke Sheila fur die Muhe' oder zumindest 'wilkommen auf's Forum', nein, sofort abschiessen. Na dann, viel Spass mit dem Algoritmus, ich werde mir wohl zweimal bedenken eh ich hier wieder etwas schreibe. Tsk.

gb0 20. Jan 2014 20:04

AW: Datumsdifferenz berechnen?
 
Hier wird nicht (ab)geschossen! Ganz bestimmt nicht, wenn sich jemand um Hilfestellung bemüht.

@Sheila: Bitte nicht traurig oder gar böse sein. Das mit dem 'Willkommen im Forum' hole ich jetzt nach!

Der wesentliche Punkt ist jedenfalls
Zitat von himitsu #14
Zitat:

Ob es nun ein Julian-Date ist, oder ein TDateTime oder ein Unit-Timestamp, ist dabei egal.
Das Ergebnis sind zwei einzelne Zahlen, mit denen man direkt rechnen kann.
Gruß

Günther

Furtbichler 20. Jan 2014 20:23

AW: Datumsdifferenz berechnen?
 
Also als Programmieranfänger könnte ich mit einer für mich unverständlichen Umrechnung in eine Zahl nun überhaupt nichts anfangen. Also frage ich mich, inwiefern das hier zielführend ist.

Ja gut, der Fragesteller hat sich bisher auch nicht mehr gemeldet, insofern könnt ihr hier auch einfach weitermachen. :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:49 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz