たとえば、当日8:00~翌日8:00 までを、操業日として管理することがあります。現在時刻から操業日付を求めたい場合、現在時刻から操業日付の区切りの時刻を差し引くことで求めることができます。
以下は、操業日付の区切りが 8:00 の場合の計算式です。
Dim bias = New TimeSpan(8, 0, 0)
Dim 操業日付 = (現在時刻 - bias).Date
これを計算した場合、現在時刻と操業日付は以下の対応になります。
============================================ 日付変更 現在時刻= 08/29 00:00 操業日付= 08/28 00:00 現在時刻= 08/29 01:00 操業日付= 08/28 00:00 現在時刻= 08/29 02:00 操業日付= 08/28 00:00 現在時刻= 08/29 03:00 操業日付= 08/28 00:00 現在時刻= 08/29 04:00 操業日付= 08/28 00:00 現在時刻= 08/29 05:00 操業日付= 08/28 00:00 現在時刻= 08/29 06:00 操業日付= 08/28 00:00 現在時刻= 08/29 07:00 操業日付= 08/28 00:00 -------------------------------------------- ここで操業日が変わる 現在時刻= 08/29 08:00 操業日付= 08/29 00:00 現在時刻= 08/29 09:00 操業日付= 08/29 00:00 現在時刻= 08/29 10:00 操業日付= 08/29 00:00 現在時刻= 08/29 11:00 操業日付= 08/29 00:00 現在時刻= 08/29 12:00 操業日付= 08/29 00:00 現在時刻= 08/29 13:00 操業日付= 08/29 00:00 現在時刻= 08/29 14:00 操業日付= 08/29 00:00 現在時刻= 08/29 15:00 操業日付= 08/29 00:00 現在時刻= 08/29 16:00 操業日付= 08/29 00:00 現在時刻= 08/29 17:00 操業日付= 08/29 00:00 現在時刻= 08/29 18:00 操業日付= 08/29 00:00 現在時刻= 08/29 19:00 操業日付= 08/29 00:00 現在時刻= 08/29 20:00 操業日付= 08/29 00:00 現在時刻= 08/29 21:00 操業日付= 08/29 00:00 現在時刻= 08/29 22:00 操業日付= 08/29 00:00 現在時刻= 08/29 23:00 操業日付= 08/29 00:00 ============================================ 日付変更 現在時刻= 08/30 00:00 操業日付= 08/29 00:00 現在時刻= 08/30 01:00 操業日付= 08/29 00:00 現在時刻= 08/30 02:00 操業日付= 08/29 00:00 現在時刻= 08/30 03:00 操業日付= 08/29 00:00 現在時刻= 08/30 04:00 操業日付= 08/29 00:00 現在時刻= 08/30 05:00 操業日付= 08/29 00:00 現在時刻= 08/30 06:00 操業日付= 08/29 00:00 現在時刻= 08/30 07:00 操業日付= 08/29 00:00 -------------------------------------------- ここで操業日が変わる 現在時刻= 08/30 08:00 操業日付= 08/30 00:00 現在時刻= 08/30 09:00 操業日付= 08/30 00:00 現在時刻= 08/30 10:00 操業日付= 08/30 00:00 現在時刻= 08/30 11:00 操業日付= 08/30 00:00 現在時刻= 08/30 12:00 操業日付= 08/30 00:00
また、前日22:00~当日22:00 までを、操業日としたい場合は、以下のようになります。
Dim bias = New TimeSpan(-2, 0, 0)
Dim 操業日付 = (現在時刻 - bias).Date
これを計算した場合、現在時刻と操業日付は以下の対応になります。
============================================ 日付変更 現在時刻= 08/29 00:00 操業日付= 08/29 00:00 現在時刻= 08/29 01:00 操業日付= 08/29 00:00 現在時刻= 08/29 02:00 操業日付= 08/29 00:00 現在時刻= 08/29 03:00 操業日付= 08/29 00:00 現在時刻= 08/29 04:00 操業日付= 08/29 00:00 現在時刻= 08/29 05:00 操業日付= 08/29 00:00 現在時刻= 08/29 06:00 操業日付= 08/29 00:00 現在時刻= 08/29 07:00 操業日付= 08/29 00:00 現在時刻= 08/29 08:00 操業日付= 08/29 00:00 現在時刻= 08/29 09:00 操業日付= 08/29 00:00 現在時刻= 08/29 10:00 操業日付= 08/29 00:00 現在時刻= 08/29 11:00 操業日付= 08/29 00:00 現在時刻= 08/29 12:00 操業日付= 08/29 00:00 現在時刻= 08/29 13:00 操業日付= 08/29 00:00 現在時刻= 08/29 14:00 操業日付= 08/29 00:00 現在時刻= 08/29 15:00 操業日付= 08/29 00:00 現在時刻= 08/29 16:00 操業日付= 08/29 00:00 現在時刻= 08/29 17:00 操業日付= 08/29 00:00 現在時刻= 08/29 18:00 操業日付= 08/29 00:00 現在時刻= 08/29 19:00 操業日付= 08/29 00:00 現在時刻= 08/29 20:00 操業日付= 08/29 00:00 現在時刻= 08/29 21:00 操業日付= 08/29 00:00 -------------------------------------------- ここで操業日が変わる 現在時刻= 08/29 22:00 操業日付= 08/30 00:00 現在時刻= 08/29 23:00 操業日付= 08/30 00:00 ============================================ 日付変更 現在時刻= 08/30 00:00 操業日付= 08/30 00:00 現在時刻= 08/30 01:00 操業日付= 08/30 00:00 現在時刻= 08/30 02:00 操業日付= 08/30 00:00 現在時刻= 08/30 03:00 操業日付= 08/30 00:00 現在時刻= 08/30 04:00 操業日付= 08/30 00:00 現在時刻= 08/30 05:00 操業日付= 08/30 00:00 現在時刻= 08/30 06:00 操業日付= 08/30 00:00 現在時刻= 08/30 07:00 操業日付= 08/30 00:00 現在時刻= 08/30 08:00 操業日付= 08/30 00:00 現在時刻= 08/30 09:00 操業日付= 08/30 00:00 現在時刻= 08/30 10:00 操業日付= 08/30 00:00 現在時刻= 08/30 11:00 操業日付= 08/30 00:00 現在時刻= 08/30 12:00 操業日付= 08/30 00:00