AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zeitberechnung eigentlich simpel, aber wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Zeitberechnung eigentlich simpel, aber wie?

Ein Thema von cherry · begonnen am 28. Mär 2007 · letzter Beitrag vom 30. Mär 2007
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#11

Re: Zeitberechnung eigentlich simpel, aber wie?

  Alt 28. Mär 2007, 10:57
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#12

Re: Zeitberechnung eigentlich simpel, aber wie?

  Alt 28. Mär 2007, 11:31
Hallo,

ob Abs() wirklich das geeignete Mittel ist? Zwischen den im ersten Beitrag angegebenen Zeitpunkten liegt ein Zeitraum von 3:41 h, und nicht etwas 20:19 h (vorausgesetzt, der zweite Zeitpunkt liegt hinter dem ersten).

Wenn kein Datum angegeben werden soll, muß das Programm diese Intelligenz einbringen, wie es im 2. und 3. Beitrag schon angedeutet wurde:

Delphi-Quellcode:
var
  DT1, DT2 : TDateTime;
begin
  DT1 := StrToTime(edFrom.Text);
  DT2 := StrToTime(edTo.Text);
  labDifference.Caption := TimeToStr(DT2 - DT1 + Ord(DT2 < DT1));
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#13

Re: Zeitberechnung eigentlich simpel, aber wie?

  Alt 28. Mär 2007, 11:36
hmmm ..
ok .. habich wohl zu schnell gepostet und zu wenig gedacht
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#14

Re: Zeitberechnung eigentlich simpel, aber wie?

  Alt 28. Mär 2007, 11:45
meine Funktion sieht nun so aus, hab Sie Gröstenteils
übernommen:

Delphi-Quellcode:
function TFrameDaten.Act_TimeBetween(von, bis : String): TDateTime;
var
 H,M: integer;
 R: Real;
 start,ende: TDateTime;
begin
  start := StrToDateTime(von);
  ende := StrToDateTime(bis);
  if start > ende then
    ende:= IncDay(ende);
  R:= HourSpan(start,ende);
  H:= Round(Int(R)); // Stunden
  M:= Round(Frac(R)* 60); // Minuten
  if M = 60 then begin // aus 60 Min wird 1 volle Stunde
    M:= 0;
    Inc(H);
   end;
  result := StrToDateTime(Format('%d:%.2d',[H, M]));
end;
Es hesisst ja man soll nie eine "Fremdfunktion" verwenden, wenn man nicht genau weis was da passiert...
na ja, also ich kappier alles voll und ganz ausser:

kann mir jmd sagen was die Parameter '%d:%.2d' bei dieser Funktion GENAU machen
Format('%d:%.2d',[H, M])); ??

ungefähr weisichs ja nur kanns mal jmd GANZ GENAU erklären? das würde mich
beeindrucken...
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#15

Re: Zeitberechnung eigentlich simpel, aber wie?

  Alt 28. Mär 2007, 23:51
Zitat von cherry:
  result:= StrToDateTime(Format('%d:%.2d',[H, M]));
% - Platzhalter (an welcher Stelle im Text (d) eingefügt werden soll)
d - Dezimalwert
: - TimeSeperator
2d - Dezimalwert (mind. 2-stellig; aus '5' wird bspw. '05'

siehe auch Delphi-Referenz durchsuchenFormat-Strings oder hier

LG Mario
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#16

Re: Zeitberechnung eigentlich simpel, aber wie?

  Alt 29. Mär 2007, 08:47
An dieser Stelle sei auch mal auf drei tolle Funktionen der Unit DateUtils hingewiesen:

Delphi-Quellcode:
function DaysBetween(const ANow, AThen: TDateTime): Integer;
function HoursBetween(const ANow, AThen: TDateTime): Int64;
function MinutesBetween(const ANow, AThen: TDateTime): Int64;
Und ja, sie machen genau das, was man denkt, was sie machen könnten...
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#17

Re: Zeitberechnung eigentlich simpel, aber wie?

  Alt 29. Mär 2007, 11:17
Hallo Daniel,

Zitat von Daniel G:
Und ja, sie machen genau das, was man denkt, was sie machen könnten...
...und damit leider nicht das, was cherry möchte. Die Routinen sortieren nämlich die übergebenen Parameter, wordurch man nicht mehr erkennen kann, ob ein Tagwechsel vorliegt.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#18

Re: Zeitberechnung eigentlich simpel, aber wie?

  Alt 29. Mär 2007, 11:29
Also wenn ich das Recht verstehe soll er sagen ob zweischen Datum1 und Datum 2 ein Tagwechsel vorliegt oder?

Ich würde das so machen

Delphi-Quellcode:
if (Trunc(Datum1)<Trunc(Datum2))then
  ShowMessage('Es liegt ein Tagwechsel vor')
else ShowMessage('Die beide Daten sind am gleichen Tag');
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#19

Re: Zeitberechnung eigentlich simpel, aber wie?

  Alt 29. Mär 2007, 12:24
Zitat von Hawkeye219:
und damit leider nicht das, was cherry möchte.
Das macht seine Funktion in Beitrag #14 aber auch nicht. Insofern scheint ihn das ja nicht zu stören...
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#20

Re: Zeitberechnung eigentlich simpel, aber wie?

  Alt 29. Mär 2007, 16:55
Tach ...,
Zitat von Daniel G:
Zitat von Hawkeye219:
und damit leider nicht das, was cherry möchte.
Das macht seine Funktion in Beitrag #14 aber auch nicht. Insofern scheint ihn das ja nicht zu stören...
... sehr wohl addiert er 24h hinzu, wenn EndeZeit < StartZeit
Delphi-Quellcode:
  if start > ende then
  ende:= IncDay(ende);
Zitat von Daniel G:
An dieser Stelle sei auch mal auf drei tolle Funktionen der Unit DateUtils hingewiesen:

Delphi-Quellcode:
function DaysBetween(const ANow, AThen: TDateTime): Integer;
function HoursBetween(const ANow, AThen: TDateTime): Int64;
function MinutesBetween(const ANow, AThen: TDateTime): Int64;
Natürlich hätte der OP auch [oh]function HoursBetween(const ANow, AThen: TDateTime): Int64;[/oh] nutzen können, aber es gibt noch mehr 'tolle' Functionen in o.g. Unit! Eine davon benutzt er
[oh]function HourSpan(const ANow, AThen: TDateTime): Double;[/oh]

LG Mario
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 Uhr.
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