■No50319 (Toshi さん) に返信
>>「翌日」を、どうやって表現しますか。
>
> 終了時間が、00:01 〜 05:59 の場合は、終了時間+24:00にする?
これは、表示上は0:00〜23:59だけど、内部的には日付も持っておけば良い、と思います。
> >>条件4
> >>経過時間合計は、経過時間1と2の経過時間の合計、
> >>※ただし、開始時間2/終了時間2の時間は、開始時間1/終了時間1と重なる時間は計算しない。
> >>※経過時間1と2の実質の重ならない時間合計を求めたい。
>>
>>「開始時間1」と「終了時間2」から求めるということ?
>>
> いいえm(--)m
> たとえば下記の数字列で考えてみたいと思います。
>
> 1-2-3-4-5-6-7-8-9-10
>
> 1-5=4 5-10=5 →9 (経過時間合計)
> 1-5=4 6-10=4 →8
> 1-5=4 4-10=6 →8
> 1-5=4 1-5 =4 →4
> 1-10=9 1-9 =8 →9
> 1-10=9 2-8 =6 →9
> 3-8 =5 1-10=9 →9
「開始時間1」と「開始時間2」には、どの様な関係があるのでしょう?また、「終了時間1」と「開始時間2」の
関係は?これをみると、何の関係も無いように思えるのですが…。
また、計算結果は「1時間単位で切り捨て」なのでしょうか。
「9時間毎に-1時間」とは、労働基準法のまま「連続8時間を超える場合は1時間の休憩」を適用するということで、
規定の休憩時間は無い、ということですか?
struct TimeRange {
DateTime start;
DateTime term;
TimeSpan IncludingTime(TimeRange d) {
if (start < d.start) {
if (d.start < term) {
if (term < d.term) {
return term - d.start;
} else {
return d.term - d.start;
}
} else {
return 0;
}
} else {
if (start < d.term) {
if (term < d.term) {
return term - start;
} else {
return d.term - start;
}
} else {
return 0;
}
}
}
}
と定義して、「開始時間1〜終了時間1」と、「開始時間2〜終了時間2」で重なっている時間を求められるように
しておけば、かなり楽になるのではないでしょうか。
携帯から即興で打っているので、正しいかどうかはわかりません。