時刻を出力するとき、正確なものでなくともいい場合があります.
例えば9時41分で入力したけど大体10時だから10時にしたい…といった感じです.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS17.0.3
スポンサーリンク
30分で均す
やり方はいくつかありますが今回は日付フォーマットを弄って操作することにします.
簡単のためまず30分間隔で均すことを考えます.
手段としては、round関数を使って時刻の分mmに対して
round(mm/30)*30
を計算させます.
roundは四捨五入を結果に返す関数なので、mmが0~14(分)の場合はmm/30は0.5未満なので0*30=0に、15~44(分)の場合mm/30は0.5以上1.5未満なので1*30=30、45分以降の場合は2*30=60…となります.
結果前者は0、後者は30になるので入力時の時刻hh/mmの定時hh:00にこの結果を足せばhh:00またはhh:30になるわけです.
グラフで見るとよりわかりやすいですね.
ただデフォルトだと日付のままなので必要な部分のみにする必要があります.
(そのまま計算させるとエラーになるか、UNIX時間扱いされます)
時刻だけ取り出して均し、定時から足す、これが基本方針です.
後者は「日付を調整」アクションを使います.
まず計算式に追加した「指定入力」です.
タップして「日付フォーマット」を「カスタム」にし、下の入力欄を「mm」に書き換えます.
(iOS17では一度編集した結果がリセットさせるマイナーバグが存在します、編集したらもう一度確認してください)
「日付を調整」アクションの入力も同じく変更します.
タップして「日付フォーマット」を「カスタム」にし、下にある入力欄を
yyyy/MM/dd HH:00
に書き換えます.
これで対象の時刻の分の部分だけ強制的に0、つまり定時になります.
最後に好きに出力して結果を確かめます.
入力が15:48なのでround(48/30)*30=round(1.6)*30=2*30=60.
15:48の定時は15:00なので上で得た60(分)を足して16:00ということで合っていますね.
均す時間を自由に決める
目的によっては30分でなく60分だったり10分だったりするでしょうからもう少し汎用性を持たせた作りにしてみます.
やることは難しくありません.
前回「計算式」でアナログに30を打っていたのを例えば「数字」アクションで予め用意しておきマジック変数に置き換えるだけです.
せっかくなので「結果を表示」にも追加します.
同じ入力である9:41に対して、インクリメント(均す時間)が30分の場合と60分の場合で結果が異なるのがわかります.
2つ目のレシピだけアップしておきます.
〆
計算式を変えることで、切り捨てにしたり繰り上げにしたりと他の均し方も可能です.