Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Code von Zeitrechnung verbessern (https://www.delphipraxis.net/202694-code-von-zeitrechnung-verbessern.html)

DieDolly 28. Nov 2019 12:30

Code von Zeitrechnung verbessern
 
Mir kam ein Stück Code über den Weg. Das ist schon was her.
Das kann man auch mit TimeSpan machen aber ich würde gerne verstehen, wie man das hier verbessern kann?

Delphi-Quellcode:
 LDivisor := 60;
 LSeconds := Seconds mod LDivisor;
 LMinutes := (Seconds div LDivisor) mod LDivisor;
 LHours := (Seconds div LDivisor) div LDivisor;
 LDays := LHours div 24;
 LHours := LHours mod 24;
 LMonths := LDays div 30;
 LDays := LDays mod 30;
 LYears := LMonths div 12;
 LMonths := LMonths mod 12;

TiGü 28. Nov 2019 12:46

AW: Code von Zeitrechnung verbessern
 
Bitte ankreuzen, in welcher Hinsicht verbessern?

[ ] Geschwindigkeit
[ ] Lesbarkeit/Verständlichkeit
[ ] Quelltextlänge/Kürze
[ ] Egal, ich stelle gerne programmiertechnisch-esoterische Fragen
[ ] Ich habe gar kein richtiges Problem, versuche mich nur abzulenken

DieDolly 28. Nov 2019 12:53

AW: Code von Zeitrechnung verbessern
 
Zitat:

[ ] Geschwindigkeit
[X] Lesbarkeit/Verständlichkeit
[X] Quelltextlänge/Kürze
[X] Egal, ich stelle gerne programmiertechnisch-esoterische Fragen
[ ] Ich habe gar kein richtiges Problem, versuche mich nur abzulenken
:thumb:

dummzeuch 28. Nov 2019 13:27

AW: Code von Zeitrechnung verbessern
 
Zitat:

Zitat von DieDolly (Beitrag 1452369)
Mir kam ein Stück Code über den Weg. Das ist schon was her.
Das kann man auch mit TimeSpan machen aber ich würde gerne verstehen, wie man das hier verbessern kann?

Delphi-Quellcode:
 LDivisor := 60;
 LSeconds := Seconds mod LDivisor;
 LMinutes := (Seconds div LDivisor) mod LDivisor;
 LHours := (Seconds div LDivisor) div LDivisor;
 LDays := LHours div 24;
 LHours := LHours mod 24;
 LMonths := LDays div 30;
 LDays := LDays mod 30;
 LYears := LMonths div 12;
 LMonths := LMonths mod 12;

Zumindest der letzte Teil ist schlicht falsch: Monate haben nicht immer 30 Tage.
Es sei denn, man ist eine Bank und berechnet Zinsen, dann ist das komischerweise erlaubt. Trotzdem ist die Berechnung dann falsch.

DieDolly 28. Nov 2019 13:31

AW: Code von Zeitrechnung verbessern
 
Deswegen bin ich hier, um das zu verbessern. Ich bin leider nicht ganz firm auf dem Gebiet.

Andreas13 28. Nov 2019 13:54

AW: Code von Zeitrechnung verbessern
 
Die korrekte Berechnung ist wesentlich komplizierter, weil auch die unterschiedliche Länge der Monate, die Schaltjahre & evtl. der Übergang zwischen Julianischem und Gregorianischem Kalender berücksichtigt werden müssen.
Gruß, Andreas

Rollo62 28. Nov 2019 14:33

AW: Code von Zeitrechnung verbessern
 
Warum verlässt Du dich nicht auf die DateUtils für solche Umrechnungen ?

Uwe Raabe 28. Nov 2019 15:13

AW: Code von Zeitrechnung verbessern
 
TTimeSpan kann das bis zu Days auf einen Aufruf (FromSeconds) herunterbrechen. Für Monate und Jahre geht des wegen der unterschiedlichen Längen dieser Einheiten nun mal nicht.

DieDolly 28. Nov 2019 16:21

AW: Code von Zeitrechnung verbessern
 
TTimeSpan und DateUtils möchte ich nicht verwenden.
Ich möchte aus Sekunden Jahre, Monate, Tage, Stunden Minuten und Sekunden machen. Das klappt mit dem Code da oben auch aber ich frage mich, wie man den verbessern kann denn der ist bestimmt alles andere als richtig.

Union 28. Nov 2019 16:28

AW: Code von Zeitrechnung verbessern
 
Wenn Du generell gewillt bist, bestehende Library-Routinen einzusetzen würde ich Delphi-Referenz durchsuchenDecodeDateTime empfehlen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr.
Seite 1 von 3  1 23   

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