質問: 勤怠管理について 19:00~7:00の夜勤の方の深夜時間を求めるための関数を教えてください。 いくつか調べて試しましたが深夜時間が最大7時間を超えて出てしまいます。
回答: 19時から勤務して時間を遡って7時に終わるわけはないので、終わったのは31時のはずです。それを間違って7時と入力してもうまくやってもらうためには、まず「24時間以上働かせません」と固く誓った上で退勤が出勤より早く見えたら翌日のことだと1足すわけです。 本当の退勤時刻 =退勤+(退勤<出勤) そのうえで、時間計算の定石パターン「出勤から退勤までのうち時刻1から時刻1に該当するのは、退勤と時刻2の早い方から出勤と時刻1の遅い方を引く、ただしマイナスにはしない」を適用して =max(0, min(退勤+(退勤<出勤), ""29:00")-max(出勤, "22:00")) これだけですね。0時から5時に出勤してくるパターンもあるなら同様の式で計算して加算します。