私のコードは次のとおりです。何か私のタイムスパンのコードで間違っている
Private Sub tbRcvrDepartTime_textchanged(sender As Object, e As EventArgs) Handles tbRcvrDepartTime.TextChanged
'Converts the 90 Receiver Arrival & Departures Date & Times to a string for comparison
Dim raTime As String = tbRcvrArriveTime.Text 'Takes the Time only String and converts to string
Dim raDate As String = dpRcvrArriveDate.Text 'Takes the DateTimePicker and converts date to string
Dim raDateString = String.Concat(raDate, " ", raTime) 'Puts together the Date & Time into one continuous string
'Dim raDateFormat As String = "MM-dd-yyyy HH:mm" 'Sets the String to Date style Format
Dim raResultDate As Date = CDate(raDateString) 'Finalizes the String for use in below comparison
Dim rdTime As String = tbRcvrDepartTime.Text 'Takes the Time only String and converts to string
Dim rdDate As String = dpRcvrDepartDate.Text 'Takes the DateTimePicker and converts date to string
Dim rdDateString = String.Concat(rdDate, " ", rdTime) 'Puts together the Date & Time into one continuous string
'Dim rdDateFormat As String = "MM-dd-yyyy HH:mm" 'Sets the String to Date Format
Dim rdResultDate As Date = CDate(rdDateString) 'Finalizes the String for use in below comparison
'Checks to see if 2 or more hours have elapsed since Receiver Arrival/Departure Date & Time
Dim elapsedR As TimeSpan = rdResultDate.Subtract(raResultDate)
tbRcvrDepartTime.BackColor = If(elapsedR.TotalMinutes > 120, Color.LightPink, Color.White)
End Sub
両方raTime & rdTimeは別々のテキストボックスです。 両方ともraDate & rdDateはdatetimepickersです。
最初にコード "live"を実行すると、最初に見た最初のレコードが正しく表示されます。一度私が別のレコードに移動すると、これは窓から出て行きます... 120分を超えるとバックカラーを適切な色に変えないランダムな結果が得られます。それ以外の場合は、120分経過したときにバックカラーを変更します(<)。ときどきバックカラーを変更したり、色を変えたりしてはいけません。私はもともとTotalHoursを使ってこれをやってみましたが、同じ結果が出ました。これはランダムであり、一貫性がありません。私は2日間この作業をしましたが、結果に違いはありません。私の考えは、それぞれの新しいレコードがロードされたときにrdResultDate & raResultDate情報を "リフレッシュ"する方法が必要であるということですが、私のコード知識でこれを行うことはできません。
raDate:11/01/2016とraTime:23:46と rdDate:11/02/2016とrdTime:03:00 - 新しい日付が存在する場合は、このコードで考慮する必要があります。これは2時間(または120分)を超え、「真」と読まれ、2時間(120分)を超えるようにバックカラーを変更する必要があります。 raDate:2016年11月1日とraTime:23:46と
rdDate:2016年11月2日とrdTime:1時00分、この2時間(または120を超えない、以下が真であった場合は
分)、「偽」と読み替えてバックカラーを変更しないでください。
ParseExactを試してみましたが、決してそれを好きではありませんでした。私はrdDateFormatとraDateFormat変数を無効にしましたが、これは解決するが運がないことを望んでいます。私は提案された変更を反映するために元のmsgのコードを更新しました。私はまだバックグラウンドのランダムなカラーリングを思いついているので、elapsedR変数は正しくないようです - たとえ私がデバッグでそれを実行しても、フォーマットは正しいと思われます。 –