私は、世界各地に展開される可能性のあるいくつかのデータ収集ポイントからデータを受け取るアプリケーションを持っています。それらはAzureサービスバスのキューにポストし、コンソールアプリケーションはキューから読み取り、UTCタイムスタンプとそれが来た場所を表すIDでこのデータを格納します。UTCを現地時間に変換する - データキャプチャの現地時間を保存/推測する方法
私は20秒ごとにリフレッシュ、入力されたデータに基づいて、反動的なイベントを実行するサービスを持っている、そしてそれはのデータウィンドウになります。
var window = DateTime.UtcNow.AddSeconds(-20);
var events = context.MyTable.Where(x => x.Timestamp >= window).ToList();
//Process the events
時間はUTCに標準化されているように、これは正常に動作します。
私もしかし、たとえば、アカウント夏時間(DST)を考慮して、同様に現地時間に、このデータに対して約統計を主張できるようにする必要があり:1日の
「平均時間というこのタイプのイベントは09:30:00です。
この例では、09:30:00
は、PST、GMTなどで発生したかどうかにかかわらず、DSTを考慮して現地時間を意味します。
私はイベントが、このデータはから来ている場所を表すオブジェクトに関連する場所同上、で保存されます言ったように:彼らはドンすなわち、一度これらの場所を設定
public class Location
{
public int id { get; set; }
public string name { get; set; }
public Organisation organisation { get; set; }
}
」は永久的なもの異なるタイムゾーンに移動することはできますが、DSTによってローカル時間が変わることがあります。
UTCの標準化されたイベントが発生した現地時間を推測するためにLocationオブジェクトに追加する必要があるフィールド(およびそのフォーマット)と、UTCの変換に使用する方法イベントの現地時間。
現地時間午後12時に発生したスペイン(+1)、GMT(+0)、PST(-8)の3つのイベントがある場合彼らは基本的に午後1時、午後12時、午後4時として保存されます。平均は午前9時だったと主張する必要があります。
しかし、ここでの知識がしますタイムゾーンは?例えば現地時間午後12時に発生したスペイン(+1)、GMT(+0)、PST(-8)の3つのイベントがあるとします。基本的に午後1時、午後12時、午後4時に保存されます。平均は午前9時だったと主張する必要があります。 – JonnyKnottsvill
なぜ気になりますか?私は深刻です - UTCに格納するという考え方は、タイムゾーンを処理する必要はありません。あなたはそれが記録されたタイムゾーンを必要とする特別なユースケースは何ですか?関連するタイムゾーンが必要な場合は、時間外に格納します(デバイスエントリの場所など)。データ構造に依存します。 – TomTom
私は、あなたが平均を得たいと思っている場所には本当に従っていません。現地時間の平均が欲しいですか?または、中央UTC時間の平均?それが後者なら、私の提案されたアプローチがうまくいくはずです。また、Eventオブジェクトを変更できますか?それともそれは問題を引き起こすか? –