Q&A 12

時間を切り捨て・切り上げするときの計算方法


勤務時間などの経過時間を切り捨て,切り上げする方法を解説します。

30分ごとに切り捨てる

日時間隔型の項目 [日時間隔] の値を 30 分毎に切り捨てた時間を数値にするには,数値型の計算項目を用意し計算式を以下のようにします。

#整数(#数値([日時間隔])/1800)/2

#数値 で日時間隔の値を数値化すると,秒単位の値が返ります。例えば,1 時間は 3600 秒ですので 3600 が,1 時間 1 分なら 3660 が返ります。この秒数を時間単位とするには 1 時間の秒数である 3600 で割ることになりますが,ここでは 30 分単位で区切るために 1800 で割ります。1 時間 1 分は 3660/1800=2.03・・・ となります。さらにその結果を #整数 で整数化することで小数部分を切り捨てます。これで 2 となり,これは 30 分未満の分の値を切り捨てるのと同じ効果を生みます。このままでは 30 分の単位ですので 2 で割ることで時間の単位の数値とします。

15分ごとに切り捨てる

時間を 15 分ごとに切り捨てるなら以下のようになります。

#整数(#数値([日時間隔])/ 900)/4

逆に切り上げる場合は以下のようにします。

30 分ごと#切上げ(#数値([日時間隔])/1800,0,0)/2
15 分ごと#切上げ(#数値([日時間隔])/900,0,0)/4

秒ごとに切り上げる,切り捨てる

より細かく 30 秒ごとなどの場合も同じような手法で処理できます。

30 秒ごとに切り上げた分数#切上げ(#数値([日時間隔])/30,0,0)/2
15 秒ごとに切り捨てた分数#整数(#数値([日時間隔])/15)/4

日時間隔型で処理する

以上の式はすべて数値型に変換していますが,これを日時間隔型とするには #日時間隔 を用います。

30 分ごとに切り捨てた時間数#日時間隔(#整数(#数値([日時間隔])/1800)/2,'時')
15 秒ごとに切り上げた分数#日時間隔(#切上げ(#数値([日時間隔])/15,0,0)/4,'分')