Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi sekunden zu zeit? (https://www.delphipraxis.net/61812-sekunden-zu-zeit.html)

Headi 26. Jan 2006 17:27


sekunden zu zeit?
 
Hallo leute,

Habe leider wieder mal ein kleines Problem.
Es geht darum, sekunden in Zeit umzuwandeln.
Ich habe schon jeden Code versucht, den ich hier finden konnte, aber keiner funktioniert so wie ich es möchte.
Zurzeit benutze ich diesen Code:

Delphi-Quellcode:
function SecondsToTime(wSeconds: Word): TDateTime;
begin
  result := wSeconds / (24 * 60 * 60);
end;
dieser code wandelt aber leider irgendwie nur bis zu 23:00:00 um,
und ich brauche aber Tage:Stunden:Minuten:Sekunden.

Wie kann ich das jetzt machen?

vielen dank schon mal

mfg headi

Luckie 26. Jan 2006 18:12

Re: sekunden zu zeit?
 
Sollte so gehen:
Delphi-Quellcode:
function FormatTime(t: int64): string; { (gettime by Assarbad) }
begin
  result := IntToStr(t mod 1000);
  case t mod 1000 < 100 of
    true: result := '0' + result;
  end;
  t := t div 1000; // -> seconds
  result := IntToStr(t mod 60) + ' Sekunden ' + result;
  case t mod 60 < 10 of
    true: result := '0' + result;
  end;
  t := t div 60; //minutes
  result := IntToStr(t mod 60) + ' Min ' + result;
  case t mod 60 < 10 of
    true: result := '0' + result;
  end;
  t := t div 60; //hours
  result := IntToStr(t mod 24) + ' Std ' + result;
  case t mod 60 < 10 of
    true: result := '0' + result;
  end;
  result := IntToStr(t div 24) + ' T ' + result;
end;

marabu 26. Jan 2006 19:09

Re: sekunden zu zeit?
 
Oder so:

Delphi-Quellcode:
// uses DateUtils;

function SecondsToTime(seconds: Cardinal): TDateTime;
begin
  Result := seconds / SecsPerDay;
end;
Grüße vom marabu

Headi 26. Jan 2006 19:49

Re: sekunden zu zeit?
 
Danke erst mal, geht aber irgendwie nicht:

erste funktion:

eingabe= 3600 sekunden (1Stunde)
ausgabe= 0 T 00 Std 00 Min 03 Sekunden 600 //falsch

code:
Delphi-Quellcode:
Edit2.Text:=FormatTime(StrToInt64(Edit1.Text));

zweite funktion:

eingabe= 86399 sekunden (23:59:59)
ausgabe= 23:59:59 // korrekt

eingabe= 86399 sekunden (01 Tag 00:00:01)
ausgabe= 31.12.1899 00:00:01 // falsch

code:
Delphi-Quellcode:
Edit2.Text:=DateTimeToStr(SecondsToTime(StrToInt(Edit1.Text)));
vielen dank schon mal für eure hilfe

mfg headi

Luckie 26. Jan 2006 19:51

Re: sekunden zu zeit?
 
Zitat:

Zitat von Headi
Danke erst mal, geht aber irgendwie nicht:

erste funktion:

eingabe= 3600 sekunden (1Stunde)
ausgabe= 0 T 00 Std 00 Min 03 Sekunden 600 //falsch

Mein Funktion erwartet Millisekunden als Eingabe!

Headi 26. Jan 2006 20:04

Re: sekunden zu zeit?
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Headi
Danke erst mal, geht aber irgendwie nicht:

erste funktion:

eingabe= 3600 sekunden (1Stunde)
ausgabe= 0 T 00 Std 00 Min 03 Sekunden 600 //falsch

Mein Funktion erwartet Millisekunden als Eingabe!

vielen dank!!

Funktioniert jetzt perfekt... man das ich da nicht selbst draufgekommen bin... :oops:


greez headi

marabu 26. Jan 2006 20:05

Re: sekunden zu zeit?
 
Hallo Pascal,

wer hat dir gesagt, dass du eine Zeitmenge einfach in ein Datum umwandeln kannst?
DateTimeToStr() ist einfach fehl am Platz:

Delphi-Quellcode:
function LongTimeToStr(seconds: Cardinal): string;
var
  dt: TDateTime;
  days: Integer;
begin
  dt := seconds / SecsPerDay;
  Result := TimeToStr(dt);
  days := Trunc(dt);
  case days of
    0: Result := TimeToStr(dt);
    1: Result := IntToStr(days) + ' Tag ' + TimeToStr(dt);
    else Result := IntToStr(days) + ' Tage ' + TimeToStr(dt);
  end;
end;
Freundliche Grüße vom marabu

Headi 26. Jan 2006 20:22

Re: sekunden zu zeit?
 
Zitat:

Zitat von marabu
Hallo Pascal,

wer hat dir gesagt, dass du eine Zeitmenge einfach in ein Datum umwandeln kannst?
DateTimeToStr() ist einfach fehl am Platz:

Delphi-Quellcode:
function LongTimeToStr(seconds: Cardinal): string;
var
  dt: TDateTime;
  days: Integer;
begin
  dt := seconds / SecsPerDay;
  Result := TimeToStr(dt);
  days := Trunc(dt);
  case days of
    0: Result := TimeToStr(dt);
    1: Result := IntToStr(days) + ' Tag ' + TimeToStr(dt);
    else Result := IntToStr(days) + ' Tage ' + TimeToStr(dt);
  end;
end;
Freundliche Grüße vom marabu

lol... ok das habe ich jetzt nicht gewusst :lol:
habe gedacht wenn es diese funktion schon gibt stimmt die auch.. war wohl einfach nicht so.

vielen dank... funktioniert jetzt auch

mfg pascal


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