Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TimeToStr, mehr als 24 std. (https://www.delphipraxis.net/68321-timetostr-mehr-als-24-std.html)

happyaura 27. Apr 2006 22:42


TimeToStr, mehr als 24 std.
 
Hallo allerseits,
gibt es eine funktion, mit der ich mir Zeiten als string ausgeben lassen kann? allerdings auch längere Zeiten als 24 Std. ist da schon was fertig vorhanden oder soll man sich das ggf selbst basteln? ist sicher schnell möglich, aber schöner würds aussehen, wenn man eine fertige funktion nutzen könnte

Delphi-Quellcode:
zeit: TDatetime;

zeit:= 25/24;
Label1.caption:=timetostr(zeit); //gewünschte ausgabe: 25:00:00 oder ähnliches

Hawkeye219 27. Apr 2006 23:00

Re: TimeToStr, mehr als 24 std.
 
Hallo,

marabus Lösung kennst du ja bereits. Die Delphi-Routinen zeigen meiner Meinung nach max. 24 Stunden an.

Gruß Hawkeye

mkinzler 28. Apr 2006 05:50

Re: TimeToStr, mehr als 24 std.
 
Zeitwerte sind Uhrzeiten und nicht Zeitspannen. Da der tag nur aus 24 Stunen besteht, gibt es auch kein 25 Uhr.

MarkusB 28. Apr 2006 06:28

Re: TimeToStr, mehr als 24 std.
 
Moin, Moin!

... "DaySpan", "DaysBetween", "HourSpan", "HoursBetween", usw ..., usw ... in "DateTime routines" ...

Viele Grüße
Markus
:gruebel:

Schlingel 28. Apr 2006 08:54

Re: TimeToStr, mehr als 24 std.
 
Habs so gelösst..

Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
function TimeToStringFormat(DeltaTime: TDateTime; MSecEnabled: Boolean): String;
var Hour, Min, Sec, MSec: Word;
begin
  DecodeTime(DeltaTime, Hour, Min, Sec, MSec);
case MsecEnabled of
  True : Result:= IntToStr(Hour + (Round(Int(DeltaTime+(1/86400))*24))) + DateTimeToStringFormat(DeltaTime, ':nn:ss,zzz');
else
         Result:= IntToStr(Hour + (Round(Int(DeltaTime+(1/86400))*24))) + DateTimeToStringFormat(DeltaTime, ':nn:ss');
end;end;
////////////////////////////////////////////////////////////////////////////////
function DateTimeToStringFormat(DateTime: TDateTime; Format: String): String;
var tmp: String;
begin
  DateTimeToString(tmp, Format, DateTime);
  Result:= tmp;
end;
////////////////////////////////////////////////////////////////////////////////
Aufruf Bsp:

Delphi-Quellcode:
TimeToStringFormat(10.0, True) = '240:00:00,000';
TimeToStringFormat(10.0, False) = '240:00:00;
Grüsse
Schlingel

[edit=Sharky] Ich habe die /// gekürzt um eine einen Scrollbalken zu vermeiden. Mfg, Sharky[/edit]

happyaura 28. Apr 2006 17:05

Re: TimeToStr, mehr als 24 std.
 
Hallo,
vielen Dnak für die Antworten.

@mkanzler
Zitat:

Zeitwerte sind Uhrzeiten und nicht Zeitspannen.
das ist mir soweit klar, wobei ich sie im moment auch als zeitspanne nutze. so kann ich 2 zeiten ohne weiteres addieren (now + intervall= neuer zeitpunkt) gibt es einen anderen datentyp, der da für mich sinnvoller ist?

@marcusB
ich hab nur einen Zeitpunkt, den ich in diesem format ausgeben möchte.

@Schlingel
so eine funktion wollt ich umgehen.


hab es jetzt als
Delphi-Quellcode:
inttostr(24*trunc(dat)+trunc(frac(dat)*24))+FormatDateTime(':nn:ss',dat);
gelöst. Hätt ja sein können, dass eine Funktion mir das so ausgibt, die ich noch nicht kannte.

Gruß Martin

mkinzler 28. Apr 2006 17:27

Re: TimeToStr, mehr als 24 std.
 
Zitat:

das ist mir soweit klar, wobei ich sie im moment auch als zeitspanne nutze. so kann ich 2 zeiten ohne weiteres addieren (now + intervall= neuer zeitpunkt) gibt es einen anderen datentyp, der da für mich sinnvoller ist?
Für Zeispannen (z.B. Zeit zwischen 2 Zeitpunkten mit Intervall > 24 Std oder Wochen-/Monatsarbeitszeiten nimmt am am Besten Integerwerte und speichert die Spanne in Sekunden/Munuten oder Industrieminuten ab.

Klaus01 28. Apr 2006 17:48

Re: TimeToStr, mehr als 24 std.
 
@mkinzler
Entschuldige die Frage, aber was sind Industrieminuten?
Habe ich noch nie gehört.

Grüße
Klaus

mkinzler 28. Apr 2006 17:51

Re: TimeToStr, mehr als 24 std.
 
In der Industrie hat die Stunde 100 Minuten, deshalb redet man dann von Industrieminuten.

Klaus01 28. Apr 2006 17:55

Re: TimeToStr, mehr als 24 std.
 
Danke, wieder etwas gelernt.

Klaus

juergen 28. Apr 2006 19:53

Re: TimeToStr, mehr als 24 std.
 
ich kann mkinzler nur zustimmen.
Hatte auch mal ein Projekt wo ich in Std:Min gerechnet hatte... Katastrophe ;-)
Später wurde mir klar, dass es eigentlich ganz einfach ist:
alles umwandeln in Integer und das Ergebnis dann teilen durch 60.
Somit rechnet man im "Standard" mit dem Dezimalsystem...

marabu 29. Apr 2006 10:41

Re: TimeToStr, mehr als 24 std.
 
Hallo Leute.

Die sogenannte Industriezeit kenne ich aus der Zeitabrechnung. Dort wird bzw. wurde sie gerne verwendet, weil nur mit Stunden und Minuten gerechnet werden muss. Der Vorteil ist, dass dann mit dem normalen Stellenwertsystem gerechnet werden kann - Zwei mal 1.5 Stunden sind dann 3 Stunden. Mit dem Faktor 36 wird dann auf SI-Einheit sec umgerechnet.

Zunehmend wird aber intern gleich mit Sekunden gerechnet - ist bei 32-bit Werten auch nicht mehr so problematisch. Und die "Leser" erfreuen sich an der gewohnten Darstellung (hh:mm:ss) für Zeitpunkte.

Freundliche Grüße vom marabu

defede 25. Jun 2007 11:28

Re: TimeToStr, mehr als 24 std.
 
Hi marabu,
wenn ich mich nicht sehr täusche sind nicht 1,5 = 3 Stunden gewesen SONDERN 1 Stunde und 30 minuten.

Die Industrieminuten werden hauptsächlich ja im in der Gehaltsrechnung einbezogen:

der Wert 4,33 = 52 Wochen /12 Monate ist da Auschlaggebend (ein Mittel zur berechnung)

stell dir mal vor dein Gehalt würde nicht mit diesem Wert berechnet werden , dann würdest du
im Februar weniger verdienen als im Januar ect...

das nochmal zu Industrieminuten.

mfg defede

Klaus01 25. Jun 2007 11:34

Re: TimeToStr, mehr als 24 std.
 
Zitat:

Zitat von defede
Hi marabu,
wenn ich mich nicht sehr täusche sind nicht 1,5 = 3 Stunden gewesen SONDERN 1 Stunde und 30 minuten.

Zitat:

Zitat von marabu
Zwei mal 1.5 Stunden sind dann 3 Stunden

Grüße
Klaus

defede 25. Jun 2007 12:46

Re: TimeToStr, mehr als 24 std.
 
:duck: ja habs gemerkt, mein Fehler, soooooryyyy


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:39 Uhr.

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