Programm zum konvertieren von Zeit in Sekunden, hh:mm:ss-format
Ich versuche, ein einfaches Programm zum konvertieren von Zeit in Sekunden, hh:mm:ss-format. Aber für einige bestimmte input-Werte, die es produziert, eine falsche Uhrzeit-format. Dies ist, was ich versucht habe:
Public Class Form1
Dim Hours, Minutes, Seconds As Integer
Private Sub btnReset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReset.Click
lblHours.Text = "00"
lblMinutes.Text = "00"
lblSeconds.Text = "00"
txtTimeSeconds.Text = ""
txtFormattedTime.Text = ""
End Sub
Private Sub btnCalculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculate1.Click
Seconds = Integer.Parse(txtTimeSeconds.Text)
Hours = Seconds / 3600
Seconds = Seconds Mod 3600
Minutes = Seconds / 60
Seconds = Seconds Mod 60
lblHours.Text = Hours.ToString.PadLeft(2, "0"c)
lblMinutes.Text = Minutes.ToString.PadLeft(2, "0"c)
lblSeconds.Text = Seconds.ToString.PadLeft(2, "0"c)
txtFormattedTime.Text = Hours.ToString.PadLeft(2, "0"c) & ":" & Minutes.ToString.PadLeft(2, "0"c) & ":" & Seconds.ToString.PadLeft(2, "0"c)
End Sub
End Class
Es funktioniert, wenn der input-Wert wird 30:
Es funktioniert nicht, wenn der Eingabewert 31:
Was habe ich falsch gemacht? Wie kann ich dieses problem beheben?
InformationsquelleAutor der Frage Failed_Noob | 2012-01-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist Klasse .NET genannt TimeSpandas macht den code einfach und elegant.
Beispiel:
InformationsquelleAutor der Antwort John Woo
Visual Basic hat zwei division Operatoren
/
und\
. Der /- operator führt zu einem Ergebnis, ist der Typ Double. Sie berechnen 31 /60 = 0.51666... Sie als Nächstes weisen Sie das Ergebnis auf eine ganze Zahl, erfordert die Rundung. Damit die Herstellung von 1, nicht 0.Wollen Sie das
\
operator der integer-division operator. Es kürzt das Ergebnis.InformationsquelleAutor der Antwort Hans Passant
Ich hoffe, dieser code wird nützlich sein,
InformationsquelleAutor der Antwort JotaPardo
Du mit Ganzzahlen um Ihre Daten zu speichern, sondern division gibt Sie verdoppelt. Beim konvertieren es zurück zu den ganzen zahlen es wird gerundet auf die nächste Runde Zahl. So 0.5 wird 0 0.51 aber wird 1.
InformationsquelleAutor der Antwort Serge Bekenkamp
InformationsquelleAutor der Antwort Siva S Tenet
Für die txtformattedtime.text=... ich denke "ispan.tostring" würde auch funktionieren.
InformationsquelleAutor der Antwort dba
Ich weiß, das hat man bereits beantwortete Fragen für eine Weile jetzt, aber ich dachte, ich würde teilen meine Lösung für das problem zur hand. Wenn Sie die Anzahl der Sekunden in einer
TimeSpan
Objekt, können Sie ganz einfach extrahieren Sie die Tage, Stunden, Minuten, Sekunden oder sogar in Bruchteilen von Sekunden direkt überTimeSpan.toString()
Methode. Bei identischer form und Objekt-Namen, ich verwendete den folgenden code, um die gewünschten Ergebnisse zu erreichen.Besuchen hier für weitere Informationen über die verwendete Methode.
InformationsquelleAutor der Antwort Sirach Matthews