現在、now()と特定の時間を比較できます。現在のメタデータには、フォームデータで使用可能な2つの関連する値があります。
例えば:
I started completing a form on March 20th 2017 at 14:00:00
I submitted a form on March 20th 2017 at 14:05:05
I want to calculate the time it took to complete the form.
CommCareは、日付と時刻のフォーム情報の期間の差を計算できますか?
インタラクションの時間が5分を超えているかどうかを確認するロジックを適用し、真の偽応答を返すことはできますか?
これらのプロパティを使用して、フォーム内にロジックを適用できますか?
この情報をケースプロパティに保存できますか?
フォーム内でこれらの値を参照することは可能ですか?
整数関数を使用する必要がありますか?
はいの場合、ユーザーがフォームの入力にかかった秒数を確認できますか?
フォーム内のtimeStart
およびtimeEnd
に直接アクセスすることはできません。
ただし、フォーム中にどれだけ時間が経過したかを把握するには、 デフォルト値と条件の計算 を利用して回避策を使用できます。
隠し値time_start
を作成し、デフォルト値がdouble(now())
の場合、これが開始時間になります。デフォルト値はフォームの最初と一度だけ計算されるためです。次に、Calculate Conditionがdouble(now())
である別の隠し値time_end
を作成します。条件の計算は質問に答えるたびに評価されるため、その時間は継続的に更新されます。
これで、フォームの経過時間は、単にtime_end
-time_start
になります。これにより、数日で出力が得られますが、これは少し残念です。数分にするために、次のことができます。
(time_end - time_start) * 24 * 60
その値が5より大きい場合、5分以上経過しています。その値が非表示の値に保存されると、予想されるすべての方法で使用できます(ケースへの保存、計算での使用)。お役に立てば幸いです!