時間計算・その1
前書き
最初に断っておきますが、私こういうパズルみたいな計算が大好きなんです。こういう時だけ根っからの理系なのかもな〜などと思うワケです。ついでに言うと、今回書く記事は結局はネタの様なものであり、最終的にはてなグラフで対応されたりした時には全く無意味なものとなってしまいます。でも、楽しいから書いているワケ。だってしょうがないじゃない。楽しいんだから(笑)
人が毎日の生活をしていく中で、数字になるものとしては「お金」や「歩数」などの具体的な整数のものもあるが、「時間」というものもよく出てくるものだ。
だが、こと「はてなグラフ」に関して言えば、整数と小数(第2位)までは対応しているが、時間には対応していない。
でも、折角だから「時間に対応させたいじゃん!」というのが今回の目標。3回シリーズでお伝えするつもり。本当は対応していればいいんだけどね :p
さて、シリーズ1回目の今日は「時間と分の入力について」を考えてみよう〜。(やたらとえらそう)
時間と分の入力について
先程も述べた通り、「はてなグラフ」の有効な桁数は「整数+小数第2位」までである。ならばこう考えてみよう。
- 整数部を時間
- 小数部を分
例)12時34分 → 12.34
もちろんそれでもいい。同じ考え方で「分、秒」でも出来なくは無い。
でも小数部にそのままの分(あるいは秒)を入れてしまうと、グラフで高さを見た時にちょっと困ってしまう。だって「0.59→1.00」までは一気に数字が飛ぶことになってしまうから。本当は1分なのに高さは40分ほども違う。これじゃちょっと、グラフにする上でも今後計算に使う上でもあまり良いとはいえないんじゃないだろうか。
そこでさらに考えを進めてこうしてみたい。
- 入力は「hh.mm」形式
- 表示は「hh.xx」形式
- 「xx」は、分を0〜99までの数字に計算しなおしたもの
とする。まぁ、細かい部分で丸めが発生してしまうので正確な値という訳には行かないだろうがとりあえずこれを計算する式を考えてみようと思う。よいやさ。
60分割を100分割へ
この辺りの計算は詳しい人もいると思うが、あえて細かく書く。
単純には以下のステップを踏むことになる。
- hh.mm → hh.xx への変換プロセス
- 整数部である時間(hh)を元の値から引き、小数部の分(mm)だけにする
- 小数部の分(mm)に100をかけ、整数化した分(MM)にする
- 整数化した分(MM)を60で割る(xx)
- 最初に引いた時間(hh)を再計算した分(xx)に加える
だ。なんだかややこしい?ややこしいよな。でも、これでいいんです。
では、参考までに出社時刻が以下の様な場合の変換前と変換後の値の確認をしてみましょう。*1
日付 出社時刻 変換後 08/01 9:30 9.50 08/02 9:16 9.27 08/03 8:40 8.67 08/04 9:31 9.52 08/05 9:24 9.40 08/06 8:55 8.92 08/07 9:00 9.00 08/08 9:15 9.25
数値の変わり方については納得していただけたでしょうか。では、それぞれのグラフを見てみることにします。
微妙にちゃんと計算されているのがわかりますでしょうか。変換後のデータは概ね少し値が多くなっています。注目すべきは 08/06 と 08/07 の値の差でしょうか。本来なら5分しか違っていないのに、変更前ではかなり離れてしまっています。
おっと、忘れてた。実際のはてなグラフの数式はこんな感じです。
- 数式=FLOOR([出社時刻])+([出社時刻]-FLOOR([出社時刻]))*100/60
さて、これで細かい計算は数式にやってもらうことになったので、自分は判りやすい「hh.mm」形式で時間を入れればいい。入力自体は少し簡単になったと思う。そして、これが出来れば「時間の差」もしっかりと計算することが出来るハズ。
というワケで、次回はその辺りを書いてみたいと思います。
・・・って、本当に3回も続ける気なのか?んー・・・ま、いっか。