web-dev-qa-db-ja.com

フォームで費やされた時間を計算する方法は?

現在、now()と特定の時間を比較できます。現在のメタデータには、フォームデータで使用可能な2つの関連する値があります。

  • started_time
  • completed_time

例えば:

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分を超えているかどうかを確認するロジックを適用し、真の偽応答を返すことはできますか?

これらのプロパティを使用して、フォーム内にロジックを適用できますか?

この情報をケースプロパティに保存できますか?

フォーム内でこれらの値を参照することは可能ですか?

整数関数を使用する必要がありますか?

はいの場合、ユーザーがフォームの入力にかかった秒数を確認できますか?

1
Amy Cooper

フォーム内のtimeStartおよびtimeEndに直接アクセスすることはできません。

ただし、フォーム中にどれだけ時間が経過したかを把握するには、 デフォルト値と条件の計算 を利用して回避策を使用できます。

隠し値time_startを作成し、デフォルト値がdouble(now())の場合、これが開始時間になります。デフォルト値はフォームの最初と一度だけ計算されるためです。次に、Calculate Conditiondouble(now())である別の隠し値time_endを作成します。条件の計算は質問に答えるたびに評価されるため、その時間は継続的に更新されます。

これで、フォームの経過時間は、単にtime_end-time_startになります。これにより、数日で出力が得られますが、これは少し残念です。数分にするために、次のことができます。

(time_end - time_start) * 24 * 60

その値が5より大きい場合、5分以上経過しています。その値が非表示の値に保存されると、予想されるすべての方法で使用できます(ケースへの保存、計算での使用)。お役に立てば幸いです!

1
Ben Rudolph