vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 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: Zeitdifferenzen Tarifsystemen 
Autor: Maas
Datum: 28.03.09 13:23

Hab die Funktion jetzt nochmal überarbeitet. Jetzt gehen beide Möglichkeiten.
    Private Function GetHours(ByVal date1 As Date, ByVal date2 As Date, _
      Optional ByVal hochtarifAb As Integer = 6, Optional ByVal hochtarifBis As _
      Integer = 22) As Double()
        Dim tagtarifAb, tagtarifBis, tagtarifH, nachttarifH As Integer
        Dim tarife(1) As Double
        Dim nextPoint, date1Zero As Date
        Dim tagTarif, verdreht As Boolean
 
        If hochtarifAb < hochtarifBis Then
            tagtarifAb = hochtarifAb
            tagtarifBis = hochtarifBis
            verdreht = False
        Else
            tagtarifAb = hochtarifBis
            tagtarifBis = hochtarifAb
            verdreht = True
        End If
        tagtarifH = tagtarifBis - tagtarifAb
        nachttarifH = 24 - tagtarifH
 
        date1Zero = date1.AddMinutes((date1.Hour * 60 + date1.Minute) * -1)
        If date1 <= date1Zero.AddHours(tagtarifAb) Then
            nextPoint = date1Zero.AddHours(tagtarifAb)
            tarife(1) = nextPoint.Subtract(date1).Hours * 60 + _
              nextPoint.Subtract(date1).Minutes
            tagTarif = False
        ElseIf date1 > date1Zero.AddHours(tagtarifAb) And date1 <= _
          date1Zero.AddHours(tagtarifBis) Then
            nextPoint = date1Zero.AddHours(tagtarifBis)
            tarife(0) = nextPoint.Subtract(date1).Hours * 60 + _
              nextPoint.Subtract(date1).Minutes
            tagTarif = True
        ElseIf date1 > date1Zero.AddHours(tagtarifBis) Then
            nextPoint = date1Zero.AddHours(tagtarifBis + nachttarifH)
            tarife(1) = nextPoint.Subtract(date1).Hours * 60 + _
              nextPoint.Subtract(date1).Minutes
            tagTarif = False
        End If
        tagTarif = Not tagTarif
 
        Do
            Dim actualPoint As Date = nextPoint
            If tagTarif Then
                nextPoint = nextPoint.AddHours(tagtarifH)
                If nextPoint.Subtract(actualPoint) < date2.Subtract( _
                  actualPoint) Then
                    tarife(0) += tagtarifH * 60
                Else
                    nextPoint = actualPoint
                    Exit Do
                End If
            Else
                nextPoint = nextPoint.AddHours(nachttarifH)
                If nextPoint.Subtract(actualPoint) < date2.Subtract( _
                  actualPoint) Then
                    tarife(1) += nachttarifH * 60
                Else
                    nextPoint = actualPoint
                    Exit Do
                End If
            End If
            tagTarif = Not tagTarif
        Loop
 
        If tagTarif Then
            tarife(0) += date2.Subtract(nextPoint).Minutes + date2.Subtract( _
              nextPoint).Hours * 60
        Else
            tarife(1) += date2.Subtract(nextPoint).Minutes + date2.Subtract( _
              nextPoint).Hours * 60
        End If
 
        If verdreht Then
            Dim d As Double = tarife(0) / 60
            tarife(0) = tarife(1) / 60
            tarife(1) = d
        Else
            tarife(0) = tarife(0) / 60
            tarife(1) = tarife(1) / 60
        End If
 
        Return tarife
    End Function
Maas
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zeitdifferenzen Tarifsystemen1.196Morfeus8226.03.09 13:53
Re: Zeitdifferenzen Tarifsystemen734ModeratorRalf Ehlert26.03.09 18:54
Re: Zeitdifferenzen Tarifsystemen739Morfeus8227.03.09 08:01
Re: Zeitdifferenzen Tarifsystemen749Maas27.03.09 10:45
Re: Zeitdifferenzen Tarifsystemen702Morfeus8227.03.09 22:41
Re: Zeitdifferenzen Tarifsystemen744Maas28.03.09 13:23
Re: Zeitdifferenzen Tarifsystemen676Morfeus8228.03.09 14:09
Re: Zeitdifferenzen Tarifsystemen704Maas28.03.09 15:13
Re: Zeitdifferenzen Tarifsystemen636Morfeus8208.04.09 08:47

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