Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Datum und Zeit minus Jetzt gleich Differenz (https://www.delphipraxis.net/34317-datum-und-zeit-minus-jetzt-gleich-differenz.html)

Teklab 21. Nov 2004 01:20


Datum und Zeit minus Jetzt gleich Differenz
 
Halli hallo...

ich bin am verzweifeln. ich versuche nun schon seit ewigkeiten die differenz aus z.B. gestern und heute zu bekommen.

Folgende Aufgabenstellung ich habe ein Programm in dem man was bauen kann. Der Bau sagen wir dauert 8Stunden. Und wird in einer Datenbank gespeichert als Datum u Zeit und einmal noch als Dauer.

So wenn ich mich im Programm neu einlogge läd er die Daten und soll errechnen ob die Bauzeit schon um ist.

Wäre das alles am selben Tag ist es kein Problem. Aber das dumme ist wenn ich um 11.11.2004 23:30:00
baue müsste es ja am 12.11.2004 07:30:00 fertig sein. Doch wie zeige ich die restlichen 15Minuten an, wenn ich mich um genau 07:15:00 einlogge?

Ich habe schon einiges ausprobiert...
Daysbetween und Hoursbetween
variable := Time(now)-zeit; <--- macht er aber nur wenns am selben Tag startet und endet.

Es muss doch etwas geben wo ich schreibe
DatumUhrzeitHeute-DatumUhrzeitvonDatenBank gleich RestZeit(Stunden,Minuten,Sekunden);

Ich habe auch schon die Forumsuche benutzt und wie gesagt mit der Zeit am selben Tag ist alles gut und schön....nur wenn noch das Datum mit ins Spiel kommt is es dumm.

fkerber 21. Nov 2004 01:33

Re: Datum und Zeit minus Jetzt gleich Differenz
 
Hi!

Unter PHP kenne ich Timestamp, der einfach alle Sekunden ab dem 01.01.1970 glaube ich hochzählt.
Da gibt es doch auch bestimmtwas von Ratiopharm ...äh... Delphi :wink:


Ciao Frederic

Sprint 21. Nov 2004 01:43

Re: Datum und Zeit minus Jetzt gleich Differenz
 
Zitat:

Zitat von Teklab
Wäre das alles am selben Tag ist es kein Problem. Aber das dumme ist wenn ich um 11.11.2004 23:30:00
baue müsste es ja am 12.11.2004 07:30:00 fertig sein. Doch wie zeige ich die restlichen 15Minuten an, wenn ich mich um genau 07:15:00 einlogge?

Nur ein Beispiel!!!
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  BauBeginn, BauEnde: TDateTime;
  BauZeitInStunden: Integer;
  Jetzt: TDateTime;
  RestZeit: TTime;
begin

  // Bauzeit beträgt 8 Stunden
  BauZeitInStunden := 8;

  // Der Bau beginnt am 11.11.2004 um 23:30:00
  BauBeginn := EncodeDateTime(2004, 11, 11, 23, 30, 0, 0);

  // Bauende errechnen
  BauEnde := BauBeginn + EncodeTime(BauZeitInStunden, 0, 0, 0);

  // jetzige Zeit (anstelle von Now, zum Testen) 12.11.2004 07:15:00
  Jetzt := EncodeDateTime(2004, 11, 12, 7, 15, 0, 0);

  // Restzeit errechnen
  RestZeit := BauEnde - Jetzt;

  // Restzeit anzeigen
  ShowMessage(TimeToStr(RestZeit));

end;

Teklab 21. Nov 2004 17:22

Re: Datum und Zeit minus Jetzt gleich Differenz
 
Ok werd gleich mal ausprobieren wenns klappt mach ich 5 kreuze :)

??? er sagt mir Word und String sind inkompatibel...
ich hole mir die 2004, 12, 12, 0, 0, 0, 0 aus der Datenbank als string *G*
und wollte EncodeDateTime(lastlogin); schreiben aber das geht ned :(

so hab jetzt das hier versucht

Delphi-Quellcode:
llog := (Zentrale.ZQuery1.FieldbyName('lastlogin').AsString);
  online := (Zentrale.ZQuery1.FieldbyName('online').AsString);
  if online = 'online' then begin
    varj := llog[7]+llog[8]+llog[9]+llog[10];
    varm := llog[4]+llog[5];
    vart := llog[1]+llog[2];
    varh := llog[12]+llog[13];
    varmi := llog[15]+llog[16];
    vars := llog[18]+llog[19];
    varms := "0";
    lastlogin := EncodeDateTime(varj, varm, vart, varh, varmi, vars, varms);

die var* sind Strings und lastlogin ist ein TDateTime so nun mault das
Programm rum das die var* keine Words sind.... ich habe wo was von "chr"
gelesen, dass es damit gehen soll aber das sagt mir nichts. Wie bekomme
ich die var Strings in Word?????

Sprint 21. Nov 2004 21:07

Re: Datum und Zeit minus Jetzt gleich Differenz
 
Zitat:

Zitat von Teklab
ich hole mir die 2004, 12, 12, 0, 0, 0, 0 aus der Datenbank als string

Warum speicherst du das Datum nicht als Datum in der Datenbank?

Teklab 22. Nov 2004 12:04

Re: Datum und Zeit minus Jetzt gleich Differenz
 
Ja aber wie bekomme ich das denn in EncodeDateTime(....) rein?
ich bin zu dumm :)

fkerber 22. Nov 2004 13:45

Re: Datum und Zeit minus Jetzt gleich Differenz
 
Hi!

Schon mal in der OH nach EncodeDateTime geschaut?

Ciao Frederic

P.S.: Falls er Strings will: Inttostr und + zum Verknüpfen.

DennisHB 22. Nov 2004 21:12

Re: Datum und Zeit minus Jetzt gleich Differenz
 
Delphi-Quellcode:
function DateTimeToMSecs (dt:TDateTime) : Comp;
begin
     result := TimeStampToMSecs( DateTimeToTimeStamp( dt ) );
end;

function MSecsToDateTime  (secs:comp)   : TDateTime;
begin
     result := TimeStampToDateTime( MSecsToTimeStamp( secs ) );
end;

procedure BerechneBauFertig(BauGestartet : TDateTime);
var
  bauFertigUm : TDateTime;
  verbleibendeZeit : comp;
begin
  verbleibendeZeit := DateTimeToMSecs(now) -  DateTimeToMSecs(BauGestartet);
  bauFertigUm := MSecsToDateTime(verbleibendeZeit );
end;
so sollte es gehen...
benutz das ganze für ein Tool zu nem BrowserGame :)

gruss Dennis

Teklab 24. Nov 2004 16:57

Re: Datum und Zeit minus Jetzt gleich Differenz
 
Lol ich mache genau das gleich wie du nur halt mit Delphi.
So werds dann mal ausprobieren. Danke für die Hilfe.

@fkerber Strings und Integer kenn ich aber Strings in Word war
das Problem


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 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