vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Stunden und Minuten addieren 
Autor: DustyD.
Datum: 23.04.22 18:06

Ich möchte gern mehrere Zeitangaben, die in einer Textdatei im Format h:mm vorliegen, addieren und das Ergebnis dann auch wieder in Stunden und Minuten ausgeben. Mit TimeValue funktioniert das auch prima, bis der Wert 24h übersteigt:

?timevalue("20:00") + timevalue("02:30") --> "22:30:00"
?timevalue("22:30") + timevalue("04:30") --> "31.12.1899 03:00:00"

Das Doofe ist, dass als Datum IMMER der 31.12.1899 angezeigt wird, sobald die "Datumsgrenze" überschritten wird, soll heißen: Immer, wenn die Addition ein Vielfaches von 24h übersteigt, wird dem Ergebnis "31.12.1899" vorangestellt und die Stunden fangen wieder bei 0 an. Scheint also der falsche Ansatz zu sein, weil hier von UHRZEITEN ausgegangen wird und nicht von ZEITEN.

Ich könnte den String "h:mm" aus der Textdatei jetz nach Minuten wandeln, dann alle Minuten-Werte addieren und wieder in Stunden und Minuten zurück rechnen.

Geht es vielleicht auch einfacher?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stunden und Minuten addieren 
Autor: Kuno60
Datum: 23.04.22 21:32

Einfacher geht es nur mit .NET. Bei VB6 ist mir keine einfache Lösung bekannt.

Mache es so, wie du bereits geschrieben hast:
Die Zeiten in Minuten umwandeln, z.B. mit TimeValue() und DateDiff(), dann die Minuten addieren und in Stunden und Minuten umrechnen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stunden und Minuten addieren 
Autor: Manfred X
Datum: 23.04.22 21:37

Hallo!

Wenn ich recht erinnere, gibt es keine einfachere (integrierte) Möglichkeit in VB.
Die Methoden beruhen auf einer Zeitachse. Zeitpunkte auf dieser Achse sind stets durch
Datum plus Uhrzeit gegeben und werden entsprechend verarbeitet.

Zudem ist die Darstellung der Ergebnisse Deiner Addition nicht eindeutig.
Sollen jeweils 24 Stunden in einen Tag umgerechnet werden?
Aus 25 Stunden wird dann eventuell 1 Tag und eine Stunde.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stunden und Minuten addieren 
Autor: minimalist
Datum: 24.04.22 11:46

Hallo,
die Frage ist unklar. Willst du Zeiten addieren, wie zum Beispiel ein Anwalt die Zeiten Aufrechnet um eine Rechnung zu schreiben oder willst du wissen was die Zeit nach einer gewissen Anfangszeit ist? Bitte Klarstellen

Beitrag wurde zuletzt am 24.04.22 um 11:47:04 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stunden und Minuten addieren 
Autor: DustyD.
Datum: 24.04.22 12:28

Ich möchte gern mehrere Zeitangaben [...] addieren und das Ergebnis [...] in Stunden und Minuten ausgeben.

Ich dachte eigentlich, die Formulierung sei eindeutig gewesen. Das Beispiel mit dem Anwalt passt aber ganz gut. Real geht es um Zeitarbeitskonten. Ich möchte halt die Soll- und die Ist-Stunden eines Monats addieren. Wenn es dafür in VB6 keine Anweisung gibt, mache ich es halt nach guter alter Väter Sitte und rechne wie im Urpost schon geschrieben, alles in Minuten um.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stunden und Minuten addieren 
Autor: Hollie
Datum: 27.04.22 17:02

Hallo Dusty, vielleicht habe ich eine Idee. Mal auf eine hoffentlich verständliche Art ein Beispiel:

Private Command1()
Call Endestunde_Bestimmen("20:00", "02:30") *Aufruf des Gut-Falles
End Sub

Private Command2()
Call Endestunde_Bestimmen("22:00", "04:30") *Aufruf des Gut-Falles
End Sub


Private Sub Endestunde_Bestimmen(Start as String, Dauer as String)
Select Case True
'Ok-Fall:
Case CSng(TimeValue(START)) + CSng(TimeValue(LAeNGE)) < 1
MsgBox Format(TimeValue(START) + TimeValue(LAeNGE), "hh:mm")
'"31.12.1899"-Fall:
Case CSng(TimeValue(START)) + CSng(TimeValue(LAeNGE)) > 1
MsgBox Format(CSng(TimeValue(START)) + CSng(TimeValue(LAeNGE)) - 1, "hh:mm")
End Select
End Sub

Anstelle üder MsgBox kannst Du das Ergebnis ja in eine Variable o.ä. übernehmen oder die Sub gar in eine Funktion umwandeln.
So, hoffe doch, jetzt hier keinen Schreibfehler reingebastelt und Dir einen Tipp spendiert zu haben.
Viele Grüße.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stunden und Minuten addieren 
Autor: Hollie
Datum: 27.04.22 17:19

Sorry, doch ein inhaltlicher Fehler: mit "Command2" wird der "31.12.1899"-Fall simuliert, also nicht der "Gut"-Fall.
Leider hat auch das Einrücken der Zeilen innerhalb der Subs nicht gefunzt, sieht doof aus, tut mir leid.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stunden und Minuten addieren 
Autor: DustyD.
Datum: 27.04.22 22:48

Huhu Hollie,

TimeValue gibt einen String mit einer Uhrzeit zurück, CSng führt zu "Typen unverträglich". Die Abfragen auf <1 und >1 verstehe ich leider auch nicht wirklich.

Ich habe es mittlerweile wie im Urthread beschrieben gelöst: In einer Function wandele ich den ankommenden String in Minuten (alles vor dem Doppelpunkt *60 + alles nach dem Doppelpunkt). Geht mit Instr() sehr komfortabel. Dann addiere ich alle Minuten und wandele wieder in Std.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stunden und Minuten addieren 
Autor: Kuno60
Datum: 28.04.22 00:55

Hallo,

da liegst du leider etwas falsch. TimeValue gibt keinen String zurück, sondern den Typ Date. Date kann man in den Typ String umwandeln oder mit CSng in den Typ Single.

So kann man es mit DateDiff machen:
  Dim d As Date
  Dim m1, m2, min As Long
 
  m1 = DateDiff("n", d, TimeValue("21:30"))
  m2 = DateDiff("n", d, TimeValue("05:45"))
  min = m1 + m2 ' Gesamt Minuten = 1635
 
  ' Umrechnung:
  Dim std As Double
  std = min / 60 ' Gesamt Stunden = 27,25
  ' oder
  Dim Stunden, Minuten As Integer
  Stunden = min \ 60 ' 27 Stunden und
  Minuten = min Mod 60 ' 15 Minuten
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stunden und Minuten addieren 
Autor: Hollie
Datum: 28.04.22 08:01

Hallo DustyD, hallo Kuno60,
"dgl" (dumm gelaufen), sorry.
Da hatte ich wohl das Bearbeitungsziel nicht korrekt verstanden. Ich ging davon aus, dass der Ausdruck "31.12.1899" stört. Gut, im geschilderten Fall sollte wohl das gewünschte Ergebnis "27:00" lauten. Dann war mein "Tipp" wirklich daneben.
DustyD: einen LfzF hab ich mit dem Code nicht, das hatte ich ja ausprobiert. Aber egal, Du hast ja nun die Lösung.
Beste Grüße.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel