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-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
Re: Zeitdifferenzen periodisch berechnen 
Autor: Manfred X
Datum: 05.04.10 01:43

Hallo!

Anhand der Vorgaben habe ich das einmal umgesetzt.

Die Hilfs-Funktion "GetDateTimeFromDTP" erwartet als ersten
Parameter ein DateTimePicker-Control, dem das Datum
entnommen wird, als zweiten Parameter eine Date-Variable
die die Tagesuhrzeit enthält. Zurückgegeben wird ein
Date-Wert, der Datum und Uhrzeit zusammengefügt enthält.

Die Routine Zeitdifferenz übernimmt zwei Zeitpunkte
(jeweils bestehend aus Datum und Uhrzeit) und berechnet
die Länge der Perioden (in Stunden).
Bei ungeeigneten Eingaben werden Ausnahmen ausgelöst.
Private Function GetDateTimeFromDTP _
    (ByVal dtp As DateTimePicker, ByVal TimeOfDay As Date) As Date
    'Datum aus Picker lesen und TimeOfDay als Tages-Uhrzeit eintragen
    Dim Datum As Date = dtp.Value
    Datum = Datum.Subtract(Datum.TimeOfDay)
    Dim ts As New TimeSpan(TimeOfDay.Hour, TimeOfDay.Minute, 0)
    Return Datum.Add(ts)
End Function
 
''' <summary>Bestimmung einer Zeitdifferenz (auf 30 min gerundete Werte)</summary>
''' <param name="StartZeitpunkt">Startzeitpunkt  Datum Stunde:Minute, auf 30 
' min gerundet</param>
''' <param name="EndZeitpunkt">Endzeitpunkt  Datum Stunde:Minute, auf 30 min 
' gerundet</param>
''' <param name="Stunden_Periode1">Anzahl Stunden in Periode 1</param>
''' <param name="Stunden_Periode2">Anzahl Stunden in Periode 2</param>
Private Sub Zeitdifferenz(ByVal StartZeitpunkt As Date, _
            ByVal EndZeitpunkt As Date, _
            ByRef Stunden_Periode1 As Double, ByRef Stunden_Periode2 As Double)
 
    Dim p1s As Integer = 420    'Tagesminute für 07:00  = Start Periode 1
    Dim p1e As Integer = 1350  'Tagesminute für 22:30  = Ende Periode 1
 
    Dim zeitpunkt As Date = StartZeitpunkt
    Dim tm As Integer  'laufende Tagesminute
 
        If StartZeitpunkt.Minute Mod 30 <> 0 Or _
           EndZeitpunkt.Minute Mod 30 <> 0 Then
            Throw New System.ArgumentException _
            ("Zeitangabe nicht korrekt gerundet")
        End If
 
        If StartZeitpunkt.Ticks > EndZeitpunkt.Ticks Then
            Throw New System.ArgumentException _
            ("Ungültige (negative) Zeitdifferenz")
        End If
 
    Stunden_Periode1 = 0 : Stunden_Periode2 = 0 'Rückgabe initialisieren
 
    'Keine Zeitdifferenz?
    If StartZeitpunkt.Ticks = EndZeitpunkt.Ticks Then Exit Sub
 
    'Zeitschleife bis zur Endzeit
    While zeitpunkt < EndZeitpunkt
        'Bestimmung akt. Tagesminute
        tm = zeitpunkt.Hour * 60 + zeitpunkt.Minute 
        If tm >= p1s And tm <= p1e Then
           Stunden_Periode1 += 0.5#  'halbe Stunde in Periode 1
        Else
           Stunden_Periode2 += 0.5#      'halbe Stunde in Periode 2
        End If
        zeitpunkt = zeitpunkt.AddMinutes(30) '30 Minuten addieren
    End While
End Sub
Anwendung (Annahme: dtpStartDatum, dtpEndDatum sind
DateTimePicker-Controls mit Datumsangaben,
StartUhrZeit, EndUhrZeit sind String-Variable,
die die Uhrzeitangaben enthalten).
Die Double-Variablen Stunden_Periode1/2 enthalten die
errechneten Stunden-Werte für das Zeitintervall.
Dim stunden_periode1, stunden_periode2 As Double
 
Zeitdifferenz(GetDateTimeFromDTP(dtpStartDatum, CDate(StartUhrZeit)), _
              GetDateTimeFromDTP(dtpEnddatum, CDate(EndUhrZeit)), _
              Stunden_Periode1, Stunden_Periode2)
Die Zeitangaben müssen mit den Windows-Einstellungen für
die Zeitformate korrespondieren.

Beitrag wurde zuletzt am 05.04.10 um 01:47:13 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zeitdifferenzen periodisch berechnen2.870Morfeus8203.04.10 22:03
Re: Zeitdifferenzen periodisch berechnen2.244Manfred X03.04.10 22:50
Re: Zeitdifferenzen periodisch berechnen2.454Manfred X03.04.10 23:27
Re: Zeitdifferenzen periodisch berechnen2.257Morfeus8204.04.10 09:32
Re: Zeitdifferenzen periodisch berechnen2.245Manfred X04.04.10 11:09
Re: Zeitdifferenzen periodisch berechnen2.275Morfeus8204.04.10 22:47
Re: Zeitdifferenzen periodisch berechnen2.318Manfred X05.04.10 01:43
Re: Zeitdifferenzen periodisch berechnen2.210Morfeus8205.04.10 10:24
Re: Zeitdifferenzen periodisch berechnen2.347Morfeus8206.04.10 11:55

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