web-dev-qa-db-ja.com

ログに記録されたデータを表示するときに夏時間を処理する方法

ユーザーのエネルギー消費量を測定してログに記録し、このデータを1時間ごとに表示するシステムがある場合、夏時間との間でシフトするときに発生する異常をどのように表示する必要がありますか?問題は、データを1時間だけログに記録すると、空の時間が1時間、または1時間に2回データがログに記録されることです。

これが通常のケースであると考えてください:

mockup

download bmml sourceBalsamiq Mockups で作成されたワイヤーフレーム

夏時間に移行したり、夏時間に移行したりすると、次のようになります。

mockup

bmmlソースをダウンロード

または:

mockup

bmmlソースをダウンロード

これをユーザーに説明する方法について何か良い提案はありますか?

6
magnus.westrom

私は以前のプロジェクトでこの正確な問題に私自身が遭遇しました、そして私たちが決定したいくつかの主なことがありました:

  1. 時間-連続している-そのように表示する必要があります、現地時間の変動に関係なく
    この場合、3番目の例はこの要件に違反しています。

  2. すべての時間は正しいはずですですから、実際の経験と相関させることができます
    例えば。 「誰も家にいなかったのに、なぜ午前3時にエネルギー使用量がそんなに高かったのですか。」

  3. チャートのすべての時間は、リアルタイムの正確に1時間を表す必要があります
    この場合、中央の「時間」は実際には2時間時間を表すため、2番目の例はこの要件に違反します。

ソリューションは、ほとんどの日が24時間であるソリューションになりますが、一部のソリューションでは25時間、その他のソリューションでは23時間です。

つまり、2番目のグラフには、「00:00–01:00」、「01:00–02:00」、「01:00–02:00」、および「02:00」というラベルの付いた4つの縦棒があることになります。 –03:00」の場合、3番目のグラフには、「00:00–01:00」と「02:00–03:00」というラベルが付いた棒が2つだけ表示されます。

同じ正確なラベルで異なる実際の時間を表す2つのバーを表示し、チャートで1時間全体をスキップするのは少し混乱することを認めますが、それはユーザーがその日を体験している方法とまったく同じであるため、あなたが提示した代替案。

また、データはほぼ確実にUTC時間に基づいて保存されるため、(比較的)技術的にも単純です。実際のデータの1時間ごとに各グラフの列を描画し、ラベルをユーザーのローカル時間に変換するだけです。

9
Kit Grose