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 - Fortgeschrittene
TimeSpan - Fehler bei 24 Uhr 
Autor: H?nk
Datum: 12.02.19 17:14

Hallo Forum

kann mir jemand sagen wie ich in TimeSpan die Zeit 0:00 Uhr bzw 24:00 Uhr eingebe bzw. berechne?
Im konkreten möchte ich die Zeit von z.B. 19:30 bis 24:00 Uhr ermitteln.

Nur - bei 24:00 gibt mir eine Fehlermeldung aus.
(TimeSpan konnte nicht analysiert werden, da sich mindestens eine der numerischen Komponenten außerhalb des gültigen Bereichs befindet oder zu viele Ziffern enthält.)


Vielen Dank

Hänk

(Wer früh aufsteht hat mehr vom Tag)

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TimeSpan - Fehler bei 24 Uhr 
Autor: Manfred X
Datum: 13.02.19 07:18

Hallo!

In den DateTime-Klassen des Framework sind Angaben zu
Stunden von 0-23 und zu Minuten von 0-59 definiert.
Der Zeitpunkt 24:00 ist in einer Date-Variable als
Zeitpunkt 00:00 des darauf folgenden Tages anzugeben.

Date- bzw. Datetime-Variable beziehen sich auf einen
Zeitpunkt und enthalten deshalb stets ein Datum UND eine
Uhrzeit.

Die Timespan-Struktur enthält keine Uhrzeit,
sondern ein Zeitintervall ausgedrückt in Ticks oder
umgerechnet in eine Anzahl von Tagen plus Stunden plus ....

Beitrag wurde zuletzt am 13.02.19 um 07:26:23 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TimeSpan (Beispiel) 
Autor: Manfred X
Datum: 13.02.19 08:01

Private Function GetTimeSpan
        (hour1 As Integer, minute1 As Integer, second1 As Integer,
         hour2 As Integer, minute2 As Integer, second2 As Integer) As TimeSpan
 
        Dim day1 As Integer = 1, day2 As Integer = 1
 
        If hour1 = 24 Then
            If (minute1 <> 0 Or second1 <> 0) Then
                Throw New ArgumentException("Unzulässige Zeitangabe")
            End If
            hour1 = 0 : day1 = 2 'Tageswechsel
        End If
 
        If hour2 = 24 Then
            If (minute2 <> 0 Or second2 <> 0) Then
                Throw New ArgumentException("Unzulässige Zeitangabe")
            End If
            hour2 = 0 : day2 = 2
        End If
 
        Dim dt1 As New Date(1, 1, day1, hour1, minute1, second1)
        Dim dt2 As New Date(1, 1, day2, hour2, minute2, second2)
 
        Return New TimeSpan(dt2.Ticks - dt1.Ticks)
 
End Function
Annahme: Die beiden Zeitangaben liegen im selben Tag,
sonst wäre ein zusätzlicher Parameter für die Zahl der
Tageswechsel zwischen den beiden Uhrzeiten erforderlich.

Beitrag wurde zuletzt am 13.02.19 um 08:15:58 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TimeSpan -und Tagnummer im Jahr 
Autor: minimalist
Datum: 13.02.19 08:35

Der unterschied zwischen 24 Uhr und 00 Uhr ist das 24 Uhr ist das Ende eines Tages und 00 Uhr ist der Anfang des nächste Tages. So 24 Uhr kann verwendet werde wenn man sich innerhalb eines Tages bewegt, 00 wenn man den nächsten Tag ansprechen will.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TimeSpan -und Tagnummer im Jahr 
Autor: Manfred X
Datum: 13.02.19 08:39

Die Differenzierung des Tageswechsels in Ende des
Tages (24:00) und Anfang des Tages (00:00) gibt es
nur im allgemeinen.

In VB.Net sind Zeitpunkte eindeutig definiert.
Einen Zeitpunkt 24:00 gibt es deshalb nicht.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TimeSpan -und Tagnummer im Jahr 
Autor: minimalist
Datum: 13.02.19 09:32

So ganz verstehe ich deine Antwort nicht. Wenn ich eine Zeitspanne berechnen will muss ich schon wissen ob diese innerhalb eines Tages oder mehrere Tage umfasst. Und die Zeiten 24 Uhr und 00 Uhr sind schon wichtig.

Beispiel:
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Button1.Text = "Exit"
        Button2.Text = "24 (same day)"
        Button3.Text = "00 (different days)"
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
      Button1.Click
        Application.Exit()
    End Sub
 
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles _
      Button3.Click
        Dim startTime As System.TimeSpan = New System.TimeSpan(43, 22, 0, 0)    _
         ' 22 Uhr abends today
        Dim endTime As System.TimeSpan = New System.TimeSpan(44, 0, 0, 0)     _
        '00 Uhr morgen früh
        Dim duration As System.TimeSpan = endTime - startTime
        Label1.Text = Label1.Text & duration.ToString
    End Sub
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles _
      Button2.Click
        Dim startTime As System.TimeSpan = New System.TimeSpan(44, 22, 0, 0)    _
         ' 22 Uhr abends today
        Dim endTime As System.TimeSpan = New System.TimeSpan(44, 24, 0, 0)     _
        '24 Uhr heute
        Dim duration As System.TimeSpan = endTime - startTime
        Label1.Text = Label1.Text & duration.ToString
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TimeSpan -und Tagnummer im Jahr 
Autor: Manfred X
Datum: 13.02.19 10:27

Die TimeSpan-Struktur beinhaltet keine Uhrzeit,
sondern ein Zeitintervall.
Insofern sind Deine Kommentare falsch.

Du berechnest im ersten Fall den Unterschied zwischen
einem Intervall von 44 Tagen und einem Intervall von
43 Tagen 22 Stunden.
Du berechnest im zweiten Fall den Unterschied zwischen
einem Intervall von 44 Tagen 24 Stunden (=45 Tage) und
einem Intervall von 44 Tagen 22 Stunden.
Da kommt überhaupt kein Datum und keine Uhrzeit vor.
Nur Zeitdauern !!!

Ein Zeitpunkt (= Datum + Uhrzeit) wird in einer Date / DateTime-Variable
aufbewahrt. Und dort ist 24:00 als Uhrzeit nicht zugelassen.

Beitrag wurde zuletzt am 13.02.19 um 10:41:21 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TimeSpan -und Tagnummer im Jahr 
Autor: H?nk
Datum: 13.02.19 16:05

Hallo und erst mal herzlichen Dank für Eure Antworten.

da es mir ja um die Zeitdifferenz geht, komme ich mit der Lösung von "minimalist" (Butto2.Click) nun zurecht.
Mir war nur nicht klar wie ich genau BIS 24 Uhr rechnen bzw. diesen Wert angeben muß.
Mit NEW TimeSpan(24, 0, 0) paßt es jetzt.

Hatte da wohl 'nen Denkfehler.

Hänk

(Wer früh aufsteht hat mehr vom Tag)

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TimeSpan -und Tagnummer im Jahr 
Autor: Manfred X
Datum: 13.02.19 16:47

Und leider hast Du diesen Denkfehler immer noch.
Es kommt zwar auch beim Intervall-Vergleich für Dich
das passende Ergebnis .... aber:
Du rechnest nicht bis 24 Uhr, sondern mit 24 Stunden.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TimeSpan -und Tagnummer im Jahr 
Autor: H?nk
Datum: 13.02.19 18:15

Das mit TimeSpan paßt doch nicht. Sorry
Ich arbeite nun über DateDiff - denke da komm ich jetzt hin.
Muß das aber noch genau durchtesten.

Hänk

(Wer früh aufsteht hat mehr vom Tag)

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