時間計算・その3
というワケで、前々回*1と前回*2に続いて3つ目の記事である。今日は「タイムカードなんだったら15分刻みで処理しなくちゃダメでしょ」という全く持って「どーでもいーよ」という程度のことをやたらと複雑に処理してみようと言う回だ。
つまり、内容の割には実りはないかも。あはははは。
そもそも15分刻みって。
まぁ、最近は勤怠管理を電子化してあったり、そもそもフレックスタイムだったりも決して珍しくはないこんな世の中なので、そもそも一般的か?というとちょっと違うかもしれないがアルバイトやパートな人たちはこんな感じでしょ?というつもりで書いてみる。
普通、「9:19」に出社してタイムカードを押した場合、「9:30出社」となる。つまり「15分刻みで繰り上げ」である。また、「18:47」に退社した場合、「18:45退社」となる。つまり「15分刻みで切捨て」である。という感じで出社の時間と退社の時間では計算式が微妙に異なるという事をまずは判っておかなければならない。細かいことであるが、会社って言うのはそういうものだ。めんどくせぇ。
まずはその辺りをシッカリと覚えておこう。じゃないと後で混乱する。私が。
まとめ
- 15分刻み
- 00分、15分、30分、45分はそのままの値。それ以外は以下に従う。
- 出社時間は切り上げ
- 例:9時19分→9時30分、9時42分→9時45分
- 退社時間は切り捨て
- 例:18時47分→18時45分、19時05分→19時00分
数式を考える
基本的には昨日までに書いたものがベース。というワケでおさらい表示。
- 数式=FLOOR([出社時刻])+MOD([出社時刻]*100,100)/60
では、出社時間の切り上げと、退社時間の切り捨てを行ってみるとどうなるか。
15分刻み出退勤時間
- 出社時間(切り上げ)
- 数式=FLOOR([出社時刻])+CEIL(MOD([出社時刻]*100,100)/15)/4
- 退社時間(切り捨て)
- 数式=FLOOR([退社時刻])+FLOOR(MOD([退社時刻]*100,100)/15)/4
今まで60分で割っていた部分を15分で割る。これが基本。その後、CEIL()とFLOOR()という関数でそれぞれ「切り上げ」と「切り捨て」を行っている。
さて、コレをした後の結果を見てもらおう。それぞれ「入力値」「15分刻み」である。
もちろん、この15分刻みに調整した後の時間(数式)から勤務時間を求めることもご覧の通り出来る。公開するのは「勤務時間」だけでもいいワケだし。というかそもそも数式のグラフは計算に使えないから、最初から入力用の「出社時刻」と「退社時刻」を非公開にして、「勤務時間」だけを公開にするというのがいいか。それ以外のグラフは要らない、いらない。
はてなグラフで「勤怠管理」というのも、ちょっと味があっていいかもしれない。累積値にすると結構な迫力があるかも?しれないし。俺って、そんなに働いてたんだ・・・とか。・・・とか。