Hallo!
Die Stringdarstellung von Zeitangaben ist z.B. von Culture-Einstellungen abhängig
und deshalb nur geeignet für die Benutzer-Interaktion, aber nicht für
interne Programmzwecke.
'Einige Benutzereingaben in Controls
Dim dtp As New DateTimePicker
dtp.Value = New DateTime(2023, 5, 10, 13, 12, 45)
Dim nudMinutes As New NumericUpDown
nudMinutes.Value = 90
Dim nudCount As New NumericUpDown
nudCount.Value = 15
'Umwandlung der Eingaben in die erforderlichen DateTime-Werte
Dim startdatetime As DateTime = FullHourBefore(dtp.Value) 'siehe oben
Dim interval As New TimeSpan(0, CInt(nudMinutes.Value), 0)
Dim enddatetime As DateTime =
startdatetime.AddMinutes(CInt(nudCount.Value) * interval.TotalMinutes)
'Erstellung der Zeitpunktliste (siehe oben)
Dim datetimelist As List(Of DateTime) =
GetTimeSeries(startdatetime, enddatetime, interval)
'Datentabelle
Dim dt As New DataTable
Dim dtColumnname As String = "Zeitpunkt"
dt.Columns.Add(dtColumnname, GetType(DateTime))
'Zwei Zeilen mit Zeitpunkten eintragen
Dim dr As DataRow, fs As String
dr = dt.NewRow
dr(dtColumnname) = datetimelist(5).AddSeconds(15)
dt.Rows.Add(dr)
dr = dt.NewRow
dr(dtColumnname) = datetimelist(10).AddSeconds(-25)
dt.Rows.Add(dr)
'Datenliste in Datatable übertragen unter Beachtung der
'bereits vorhandenen Zeitpunkte und
'einer Genauigkeit von +/- 30 Sekunden
For i As Integer = 0 To datetimelist.Count - 1
dr = dt.NewRow()
'Filterstring für Vergleich / Zeitangaben in Hochkommas
fs = dtColumnname & ">'" & datetimelist(i).AddSeconds(-30) &
"' And " & dtColumnname & "<'" & datetimelist(i).AddSeconds(+30) & "'"
If dt.Select(fs).Count = 0 Then
dr(dtColumnname) = datetimelist(i)
dt.Rows.Add(dr)
End If
Next i
'Für die getrennte Anzeige von Datum und Uhrzeit
'wird eine zweite Spalte (Expression) erstellt
dt.Columns.Add("Uhrzeit", GetType(DateTime), dtColumnname)
bs.DataSource = dt 'Bindingsource für Datenbindung Um die getrennte Anzeige von Datum und Uhrzeit im Datagrid zu ermöglichen,
verwendet man z.B. die Expressionspalte "Uhrzeit" im CellFormatting-Event
des Datagridview-Control.
Private Sub dgv_CellFormatting(sender As Object,
e As DataGridViewCellFormattingEventArgs) Handles dgv.CellFormatting
If e.ColumnIndex = 0 Then
If Not IsDBNull(e.Value) Then
e.Value = CDate(e.Value).ToString("dd.MM.yyyy")
e.FormattingApplied = True
End If
ElseIf e.columnindex = 1 Then
If Not IsDBNull(e.Value) Then
e.Value = CDate(e.Value).ToString("hh:mm")
e.FormattingApplied = True
End If
End If
End Sub |