私のアプリケーションには、x軸に沿って日付、y軸に沿ってさまざまなステータスを表示するテーブルがあります。テーブルは、従業員が特定の作業ステータス(勤務中、勤務外など)で特定の日に費やした時間を時間:分で追跡します。下に大まかなスケッチを入れました:
私の心配は、一部のユーザーが混乱し、この状態が発生した時刻(つまり、6:00に勤務した、18:00に勤務していないなど)とは異なる何かを表していると思うかもしれないということです。この時間を表現するためのより良い方法はありますか?それが何を表しているかをより明確にするために、またはこれはユーザーが自分のソフトウェアを時間をかけて使用して自分で学ぶ必要があるものでしょうか?
あなたはこの質問をするのは正しいです。それは本当にユーザーが誰であるかに依存します。
労働集約型の環境では、ユーザーはHH:MM
表記の期間に慣れていることが多いため、その形式を使用しても問題ありません。しかし、私はそれらの環境でさえ、それを時間と混同しやすいことに同意します。
もっと良い方法はありますか?
既存のソリューションから始めましょう。 HH:MM
の利点は次のとおりです。
HH:MM
は適切に配置されるため、簡単にスキャンできます。これを念頭に置いて、ここに2つのアプローチがあります。既存のテーブルにラベルを付けて、時間ではなく継続時間を示していることをユーザーに思い出させることができます。または、別の表記を採用して、期間であることを示すこともできます。
左側の表記は最近人気があり、スキャン可能性の一部(すべてではない)を保持しながら、持続時間をより明確に示しています。右側のアプローチは、HH:MM
表記のクリーンさを維持し、左上隅(とにかくテーブルへの視覚的なエントリポイント)を利用してユーザーコンテキストをエレガントに設定します。
時間形式を示すオフセットの前にプラス記号が付けられることがあります。また、期間を示すこともあります。例えば:
+4:00 +10:00 +4:00 +6:00 +0:00 +6:00
別の可能性は、時々(しばしばレースタイムで)使用されるように、最後に「プライム」マークを追加することです。分と秒は4′33″
のように見えるため、1つの素数は分なので、1:30′
を1時間半使用します。
小さなフォントで分を表示することもできます。
ストップウォッチでは、これは秒またはミリ秒の間行われます。
download bmml source – Balsamiq Mockups で作成されたワイヤーフレーム
国際標準 ISO 8601 はP04:00
またはP4H
。ただし、期間、期間、期間、繰り返しに関する部分はほとんど追跡されず、そもそも日付形式を使用していません。 JFTR
その点に注意してください 4h00
は、クロック時間をそのように書く傾向があるため、あいまいではありません。 4h00m
または4h00min
ましだろう。
アイコンもあります。ストップウォッチ⏱(大きなボタン付き)は、多くの場合、時計の文字盤に表示される時間(あまり頻繁にない砂時計⏳)を示します???? (大きな手で)時間を示します。
小数を使用できます。だから例えば:
90分は1.5 hours
の代わりに 1:30
3時間45分は3.75
の代わりに 3:45
このフォーマットは高度にスキャン可能であり、頭の中で値を合計するのを容易にします。
範囲外かもしれませんが、常連客を検出するためにテーブルをスキャンすることは、あまりユーザーフレンドリーではありません。リソースが利用可能な場合、水平積み上げグラフを使用します。
これにより、各ステータスの時間のパーセンテージをより適切に把握できるようになり、パターン外の日をスキャンするのがより簡単になります。
Crissovによる回答 で述べたように、 ISO 8601 標準は、次の形式での期間のテキスト表現:PnYnMnDTnHnMnS
、 Durations と呼ばれます。
この形式では、P
が始まりを示します。 T
は、日部分を時間(小数日)部分から分離し、丸一日では省略されます。
例:
P1D
=丸一日。PT5M
= 5分。PT4H30M
は「4時間半」を意味します。P3Y6M4DT12H30M5S
は、「3年、6か月、4日、12時間、30分、5秒」の期間を表します。4H 30M
ユーザーに提示するために、PT
を切り捨てることができます。したがって、4時間半は4H30M
。
おそらく、読みやすいようにスペースを追加します:4H 30M
。
良い点は、この形式が明確であり、他の意味と混同されないことです。もう1つの利点は、標準であることです。そして、値はやや直感的で読みやすく、理解しやすいものです。
1つの欠点は、ユーザーが慣れていない可能性があることです。そのため、説明やトレーニングが必要になる場合があります。
一部のプログラミングライブラリは、そのような文字列を解析および生成できます。 Javaの場合、 Joda-Time ライブラリは Period
クラス。同様に、Java 8に組み込まれた新しい Java.timeパッケージ は、 Period
クラス。
Joda-Time 2.7を使用した例。
DateTime now = DateTime.now();
Period period = new Period( now , now.plusHours( 7 ) );
System.out.println( "period: " + period.toString() );
出力:
period: PT7H
JIRAは「3h 15m」スタイルの表記を使用しており、これは私には有効です。
一方で、15分のブロックで時間を入力するタイムシートシステムを使用しました。 3.25のような10進数値として時間を入力する必要があることは、3時間15分の期間を表現するための非直感的な方法であることがわかりました。
与えられた例では、いくつかのことが明確ではありません。
粒度とは何ですか?分?、5分か30分? 24時間の日をいくつかの状態に分割して表示する場合、ビューに対して正確すぎる時間/分ではなく、パーセンテージまたはセグメント化された棒グラフに沿って考えているでしょう。また、年に2回は23時間または25時間かかることも覚えておいてください。
もう1つの解決策は、秒も表示することです。秒が変化するので迅速に時間が継続的に変化していることは明らかです。このソリューションはお勧めしませんが、明確さの観点からは機能します。
どちらの方法にも低位の場所が2つあるため、混乱が生じているようです。小数点を使用して、すべてのデータを1時間の小数点以下3桁(または小数点以下1桁)に変換し、表示前に丸めることができます。内部で整数分の計算を行うことにより、データを正確に保つことを忘れないでください。そうすることで、合計時にマイナーな浮動小数点エラーは発生しません。別のアイデアは、すべてを数分で報告することです。
一部のユーザーでいくつかの代替案をテストすると、おそらくまだ出ていないものである最良のソリューションに到達できる可能性があります。あいまいさを解決するのはあなたの仕事だと考える人もいます。