vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 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

VB.NET - Ein- und Umsteiger
Benötige etwas Hlfe beim erstellen eines Code zum addieren von Zeiteinheiten!! 
Autor: Neueinsteiger
Datum: 13.09.08 13:20

Hallo Leute,

ich bin am verzweifeln, ich schreibe ein kleines Programm, das mir Stunden minuten und sekunden addiert und eine richtige Uhrzeit angibt.
Ich will zum beispiel zu der Zeit 10:24:36 einmal 50 minuten addieren und auf diese Ergebnis dann nochmal 135 sekunden. Ich habe den Code jetzt soweit fertig, dass das Programm rechnet. allerdings kommt keine anstädige Uhrzeit heraus.

Bei mir sieht es dann so aus:

10:24:36
10:74:36
10:74:171

statt so:

10:24:36
11:14:36
11:16:51

Hier ist mein Code:

Imports System.Console
Enum Zeiteinheit As Integer
Stunde = 1
Minute = 60
Sekunde = 3600
End Enum
Class Zeit
Private m_std As Short
Private m_min As Short
Private m_sek As Short

Public Sub New(ByVal Stunde As Short, _
ByVal Minute As Short, _
ByVal Sekunde As Short)
m_std = Stunde
m_min = Minute
m_sek = Sekunde
End Sub

Sub Anzeigen()
Write("Zeit: {0}:{1}:{2} ", m_std, m_min, m_sek)
ReadLine()
End Sub

Public Sub Addieren(ByVal Anzahl As Short, _
ByVal Einheit As Zeiteinheit)
Select Case Einheit
Case Zeiteinheit.Sekunde
m_sek += Anzahl
Case Zeiteinheit.Minute
m_min += Anzahl
Case Zeiteinheit.Stunde
m_std += Anzahl
End Select
End Sub

Function zuSekunde() As Integer
Dim Sekunde As Integer
Sekunde = CInt(3600 * m_std) + (60 * m_min) + m_sek
End Function

Private Sub zuZeit(ByVal Sekunde As Integer)
m_sek = Sekunde Mod 60
m_min = (Sekunde \ 60) Mod 60
m_sek = Sekunde \ 60 * 60
End Sub

End Class

Module abc
Sub MAin()
Dim z As New Zeit(10, 24, 36)
z.Anzeigen()
z.Addieren(50, Zeiteinheit.Minute)
z.Anzeigen()
z.Addieren(135, Zeiteinheit.Sekunde)
z.Anzeigen()
ReadLine()
End Sub
End Module

Ich denke mal mein Fehler kann eigentlich nur in der Sub Anzeigen liegen, aber ich komme einfach nnicht drauf. kann mir vlt. jemand helfen.

LG Michael
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Benötige etwas Hlfe beim erstellen eines Code zum addieren von Zeiteinheiten!! 
Autor: cookstdu
Datum: 13.09.08 14:36

Hallo

Warum verwendest du nicht den Datentyp DateTime?

Der bietet dir alle Möglichkeiten, zum addieren, subtrahieren, formatiren......

Public Class zeit
    Enum Zeiteinheit As Integer
        Stunde = 1
        Minute = 60
        Sekunde = 3600
    End Enum
    Private mTime As DateTime
    Public Sub New(ByVal Stunde As Short, _
  ByVal Minute As Short, _
  ByVal Sekunde As Short)
        mTime = New DateTime(1, 1, 1, Stunde, Minute, Sekunde)
    End Sub
    Public Sub Addieren(ByVal Anzahl As Short, ByVal Einheit As Zeiteinheit)
        Select Case Einheit
            Case Zeiteinheit.Sekunde
                mTime = mTime.AddSeconds(Anzahl)
            Case Zeiteinheit.Minute
                mTime = mTime.AddMinutes(Anzahl)
            Case Zeiteinheit.Stunde
                mTime = mTime.AddHours(Anzahl)
        End Select
    End Sub
    Sub Anzeigen()
        Console.WriteLine("Zeit: {0} ", mTime.ToLongTimeString)
        Console.ReadLine()
    End Sub
End Class
cu

Wenn alle Stricke rei?en, dann h?ng ich mich auf. ~ Karl Kraus

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Benötige etwas Hlfe beim erstellen eines Code zum addieren von Zeiteinheiten!! 
Autor: engelmarkus
Datum: 13.09.08 14:37

Spricht denn etwas dagegen, dass du das so machst?

Module Module1
    Sub Main()
        Dim zeitAnfang As New TimeSpan(10, 24, 36)
 
        Dim zeitEnde = zeitAnfang.Add(New TimeSpan(0, 50, 135))
 
        Console.WriteLine("{0}:{1}:{2}", Format(zeitEnde.Hours, "00"), Format( _
          zeitEnde.Minutes, "00"), Format(zeitEnde.Seconds, "00"))
 
        Console.ReadKey()
    End Sub
End Module
EDIT: Hoppla, ich war scheinbar zu langsam...

Beitrag wurde zuletzt am 13.09.08 um 14:37:31 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Benötige etwas Hlfe beim erstellen eines Code zum addieren von Zeiteinheiten!! 
Autor: Neueinsteiger
Datum: 13.09.08 15:11

ICh würde es ja gerne auf dem Einfachsten weg lösen, aber es ist eine HAusaufgabe und die muss ich auf diesem weg lösen. Aber Danke schonmal für eure Vorschläge.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Benötige etwas Hlfe beim erstellen eines Code zum addieren von Zeiteinheiten!! 
Autor: mitsch
Datum: 13.09.08 15:36

hi

versuche es hiermit

Select Case Einheit
Case Zeiteinheit.Sekunde
m_sek += Anzahl
If m_sek >= 60 Then
m_sek = m_sek Mod 60
m_min += Anzahl \ 60
End If
Case Zeiteinheit.Minute
m_min += Anzahl
If m_min >= 60 Then
m_min = m_min - 60
m_std += 1
End If
Case Zeiteinheit.Stunde
m_std += Anzahl
End Select

gruß
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Benötige etwas Hlfe beim erstellen eines Code zum addieren von Zeiteinheiten!! 
Autor: Neueinsteiger
Datum: 13.09.08 15:45

Ja es klappt jetzt soweit aber wenn ich eine ziehmlich hohe Zahl eingebe dann wird das Ergebnis auch wieder falsch.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Benötige etwas Hlfe beim erstellen eines Code zum addieren von Zeiteinheiten!! 
Autor: icetea123
Datum: 13.09.08 16:26

Ich würd erst alles in Sekunden umrechnen:

Dim gesamt As Integer
 
gesamt = std * 3600 + min * 60 + sec
jetzt addierst du z.B. 135 Sekunden

gesamt += 135
und hier wird alles wieder zurückgewandelt

std = gesamt \ 3600 ' Der '\' ist wichtig. Dadurch werden nachkommastellen 
' Abgeschnitten und man spart sich eine Umwandlung in Integer.
 
gesamt -= std * 3600
 
min = gesamt \ 60
 
gesamt -= min * 60
 
sec = gesamt
MfG,
icetea

-----------------------------------
Betriebssystem: Schrott (Vista)
Entwicklungsumgebung: VS 2008

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Benötige etwas Hlfe beim erstellen eines Code zum addieren von Zeiteinheiten!! 
Autor: cookstdu
Datum: 13.09.08 16:30

Hallo

Und ich würde dem Aufgabensteller erklären, dass wir nicht mehr bei Q-Basic sind

Wenn alle Stricke rei?en, dann h?ng ich mich auf. ~ Karl Kraus

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Benötige etwas Hlfe beim erstellen eines Code zum addieren von Zeiteinheiten!! 
Autor: Neueinsteiger
Datum: 13.09.08 16:31

Ja so geh es ja auch aber ich muss es ja mit Anzahl und der enumeration Zeiteinheit machen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Benötige etwas Hlfe beim erstellen eines Code zum addieren von Zeiteinheiten!! 
Autor: icetea123
Datum: 13.09.08 16:32

Dann prüfst du eben die Einheit und rechnest die Anzahl temporör in Sekunden um.
So viel mitdenken muss noch sein.

-----------------------------------
Betriebssystem: Schrott (Vista)
Entwicklungsumgebung: VS 2008

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