AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zeit in Sekunden umrechnen

Ein Thema von Monday · begonnen am 12. Dez 2015 · letzter Beitrag vom 12. Dez 2015
Antwort Antwort
Seite 1 von 2  1 2   
Monday

Registriert seit: 24. Aug 2012
85 Beiträge
 
FreePascal / Lazarus
 
#1

Zeit in Sekunden umrechnen

  Alt 12. Dez 2015, 11:09
Für diejenigen die es brauchen könnten...

Mit dieser Funktion kann man eine Zeit in Sekunden umrechnen:

Code:
function Zeit_In_Sekunden_Umwandeln(std_min_sek:string): integer;
{ Rechnet eine Zeit im Format Std:mm:ss in Sekunden um. Beispiel:
ShowMessage( IntToSTr( Zeit_In_Sekunden_Umwandeln('0:10:00') )); // 10 min, result 600 (sekunden}  //SH
var
    zeit : TStringList;
begin
    zeit := TStringList.Create;
    zeit.Delimiter:=':';;
    zeit.DelimitedText:=std_min_sek;
    result := StrToInt(zeit[0])*60*60+StrToInt(zeit[1])*60+StrToInt(zeit[2]);
end;
Wahrscheinlich gibt es dafür eine hauseigene Funktion, doch bevor ich stundenlange suche und probiere, habe ich selbst diese kleine Funktion geschrieben. Wollte das in die CodeLibrary schreiben, habe dort aber keine Schreibrechte.

LG
Monday
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: Zeit in Sekunden umrechnen

  Alt 12. Dez 2015, 11:23
Delphi-Quellcode:
function Zeit_In_Sekunden_Umwandeln(std_min_sek:string): integer;
{ Rechnet eine Zeit im Format Std:mm:ss in Sekunden um. Beispiel:
ShowMessage( IntToSTr( Zeit_In_Sekunden_Umwandeln('0:10:00') )); // 10 min, result 600 (sekunden}
  //SH
var
  zeit : TStrings;
begin
  Result := 0;
  zeit := TStringList.Create;
  try
    zeit.Delimiter:=':';;
    zeit.DelimitedText:=std_min_sek;
    result := StrToInt(zeit[0])*60*60+StrToInt(zeit[1])*60+StrToInt(zeit[2]);
  finally
    zeit.free;
  end;
end;
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.830 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Zeit in Sekunden umrechnen

  Alt 12. Dez 2015, 11:25
Moin...
Hier drängt sich erst einmal eine grundsätzliche Frage auf. Warum arbeitest du für die Zeitwerte mit string? Programmintern sollte man immer mit TDateTime arbeiten. Der formatierte String ist dann nur für die Darstellung da.

Sekunden zwischen 2 DateTime Werten: bei dir dein Wert und 0
http://www.delphipraxis.net/dp_refer...secondsbetween
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: Zeit in Sekunden umrechnen

  Alt 12. Dez 2015, 11:39
Na ja, manchmal ergibt sich schon die Situation, aus einem formatierten String zurück zu TDateTime rechnen zu müssen. Z.B. Importfunktionen aus Textdateien usw.

Ich wollte eigentlich (ohne Kommentar) nur auf die Speicherleiche und die fehlenden Delphi-Tags hinweisen.
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Zeit in Sekunden umrechnen

  Alt 12. Dez 2015, 11:54
Aber dafür drängt sich doch StrToTime auf?
Das Ergebnis multipliziert man mit SecsPerDay und ist fertig
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.024 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Zeit in Sekunden umrechnen

  Alt 12. Dez 2015, 12:43
Das Ergebnis multipliziert man mit SecsPerDay und ist fertig
Stimmt, stell Dir vor, die Software wird auf dem Titan ausgeführt, da hat der Tag einen anderen Wert für SecsPerDay .
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Zeit in Sekunden umrechnen

  Alt 12. Dez 2015, 12:57
Das Ergebnis multipliziert man mit SecsPerDay und ist fertig
Stimmt, stell Dir vor, die Software wird auf dem Titan ausgeführt, da hat der Tag einen anderen Wert für SecsPerDay .
Stell dir vor, jemand anderes soll deinen Code lesen und verstehen

Delphi-Quellcode:
function SecondsFromTime( ATime: TTime ) : Integer;
begin
  Result := ATime * 86400;
end;

function SecondsFromTimeStr( const ATimeStr: string ):Integer;
begin
  Result := SecondsFromTime( StrToTime( ATimeStr ) );
end;
oder
Delphi-Quellcode:
function SecondsFromTime( ATime: TTime ) : Integer;
begin
  Result := ATime * SecsPerDay;
end;

function SecondsFromTimeStr( const ATimeStr: string ):Integer;
begin
  Result := SecondsFromTime( StrToTime( ATimeStr ) );
end;
Wo hat der unbedarfte Leser wohl schneller die Funktionsweise erfasst?

Ja, man kann natürlich für die Lesbarkeit einen Kommentar schreiben
Delphi-Quellcode:
function SecondsFromTime( ATime: TTime ) : Integer;
begin
  Result := ATime * { Sekunden pro Tag } 86400;
end;
wir vergleichen nochmal mit
Delphi-Quellcode:
function SecondsFromTime( ATime: TTime ) : Integer;
begin
  Result := ATime * SecsPerDay;
end;
Huch, documented by code

Und wo können sich beim Tippen wohl eher Fehler einschleichen?

Darum keine magic values im Code
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Monday

Registriert seit: 24. Aug 2012
85 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Zeit in Sekunden umrechnen

  Alt 12. Dez 2015, 13:08
Ja die Funktion ist tatsächlich entstanden aus dem Import von Textdateien. In den meisten Textdateien wird die Zeit (= gestoppte Zeit einer Anwendung) in Sekunden angezeigt und in manchen anderen wird sie in xxxx angezeigt. Und ich entschied mich alles in sekunden umzurechnen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Zeit in Sekunden umrechnen

  Alt 12. Dez 2015, 13:25
Und damit jetzt nicht wieder jemand mit dem Pluto Beispiel ankommt nennen wir die Konstante: SECSPEREARTHDAY
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10

AW: Zeit in Sekunden umrechnen

  Alt 12. Dez 2015, 13:44
Zitat:
Und damit jetzt nicht wieder jemand mit dem Pluto Beispiel ankommt nennen wir die Konstante: SECSPEREARTHDAY
......und bei uns in Bayern, wo die Uhren bekanntlich rückwärts gehen, was machen wir da?
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:05 Uhr.
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