日付に時間を追加し、新しい日付を稼働日にラップしたい状況があります。この新しい日付を決定する関数を作りましたが、何も忘れていないことを確認したいと思います。
加算される時間は「遅延」と呼ばれます。代わりに、簡単に関数のパラメーターにすることができます。
提案を投稿してください。【VB.NET注意事項】
Private Function GetDateRequired() As Date
''// A decimal representation of the current hour
Dim hours As Decimal = Decimal.Parse(Date.Now.Hour) + (Decimal.Parse(Date.Now.Minute) / 60.0)
Dim delay As Decimal = 3.0 ''// delay in hours
Dim endOfDay As Decimal = 12.0 + 5.0 ''// end of day, in hours
Dim startOfDay As Decimal = 8.0 ''// start of day, in hours
Dim newHour As Integer
Dim newMinute As Integer
Dim dateRequired As Date = Now
Dim delta As Decimal = hours + delay
''// Wrap around to the next day, if necessary
If delta > endOfDay Then
delta = delta - endOfDay
dateRequired = dateRequired.AddDays(1)
newHour = Integer.Parse(Decimal.Truncate(delta))
newMinute = Integer.Parse(Decimal.Truncate((delta - newHour) * 60))
newHour = startOfDay + newHour
Else
newHour = Integer.Parse(Decimal.Truncate(delta))
newMinute = Integer.Parse(Decimal.Truncate((delta - newHour) * 60))
End If
dateRequired = New Date(dateRequired.Year, dateRequired.Month, dateRequired.Day, newHour, newMinute, 0)
Return dateRequired
End Sub
注: 遅延が 9 時間を超える場合、これはおそらく機能しません。3 から 3 までは決して変化しないはずです。
編集: 目標は、現在の時刻に数時間を追加した結果として得られる日付と時刻を見つけることです。これは、提出期限のデフォルト値を決定するために使用されます。期日を取得するために、現在の時刻に 3 時間を追加したいと考えています。ただし、当日の午後 5 時を超える期日は望ましくありません。そこで、(今日の午後 5 時まで) と (明日の午前 8 時から) の間で時間を分割して、午後 4 時に 3 時間を追加すると午前 19 時になるようにしました。時間は明日の初めに追加されます。