vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
Re: Zeitbereiche effektiv prüfen 
Autor: mikeb69
Datum: 21.03.09 09:36

hallo thovi,

hab mich jetzt auch mal hingesetzt.

bei mir stehen alle ein- und ausschaltzeiten in einer liste, welche ich vor dem vergleichen sortiere.
ausserdem geh ich davon aus, dass die zeiten in der liste ok sind.

dann wir es trivial - die gefragte zeit darf in keiner zeit liegen.
(weder start noch endzeit)

Public Class Form1
 
    Private Structure onoff
        Public makeon As Date
        Public makeoff As Date
        Public Sub New(ByVal _on As Date, ByVal _off As Date)
            makeon = _on
            makeoff = _off
        End Sub
    End Structure
    Private onofflist As New List(Of onoff)
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        onofflist.Add(New onoff(New Date(1, 1, 1, 23, 0, 0), New Date(1, 1, 1, _
        1, 0, 0)))
        onofflist.Add(New onoff(New Date(1, 1, 1, 19, 0, 0, 0), New Date(1, 1, _
        1, 22, 30, 0)))
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        'erstmal sortieren
        onofflist.Sort(AddressOf sort_list)
        'jetzt vergleichen
        If istimeok(New Date(1, 1, 1, 22, 0, 0), New Date(1, 1, 1, 0, 0, 30)) _
          Then
            MessageBox.Show("Zeit OK")
        Else
            MessageBox.Show("Zeit nicht OK")
        End If
    End Sub
 
    Private Function sort_list(ByVal p1 As onoff, ByVal p2 As onoff)
        If p1.makeon.Ticks < p2.makeon.Ticks Then
            Return True
        Else
            Return False
        End If
    End Function
 
    Private Function istimeok(ByVal start As Date, ByVal finish As Date) As _
      Boolean
        For Each oo In onofflist
            'da die liste aller zeiten sortiert ist muss nur geprüft werden ob 
            ' die geprüfte zeit
            'innerhalb einer der anderen zeiten liegt
            If (start.Ticks > oo.makeon.Ticks And start.Ticks < _
              oo.makeoff.Ticks) Or _
               (finish.Ticks > oo.makeon.Ticks And finish.Ticks < _
               oo.makeoff.Ticks) Then
                Return False
                Exit Function
            End If
        Next
        Return True
    End Function
End Class
sollte funktionieren.

gruss

mikeb69
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zeitbereiche effektiv prüfen2.323thovi20.03.09 07:16
Re: Zeitbereiche effektiv prüfen1.879thovi20.03.09 08:35
Re: Zeitbereiche effektiv prüfen1.833thovi20.03.09 09:29
Re: Zeitbereiche effektiv prüfen1.764thovi20.03.09 11:32
Re: Zeitbereiche effektiv prüfen1.763thovi20.03.09 17:51
Re: Zeitbereiche effektiv prüfen2.881Kuno6020.03.09 18:10
Re: Zeitbereiche effektiv prüfen2.187mikeb6921.03.09 09:36
Re: Zeitbereiche effektiv prüfen1.946thovi21.03.09 10:48
Re: Zeitbereiche effektiv prüfen2.330thovi23.03.09 15:26

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-2025 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