| |
VB.NET - Ein- und UmsteigerBenö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 | |
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 | |
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. | |
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. | |
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ß | |
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. | |
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
| |
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. | |
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
| |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere Infos
|