UTC値をローカルタイムに変換したDateTime列を使用してソートされたDataGridがあります。問題はDSTにあります(11月6日午前2:00:00から午前1:00:00に戻ってくる)1時間が繰り返されるためです。私はすでに、IComparableから継承するクラスを使用して列を比較する方法を実装し、ToUniversalTime()を使用して日付を手動で比較しますが、間違った値を返します。説明するために、より良い私は例を示しましょう:表示DTCを保持するUTCへのLocalTime
DataTable table = new DataTable();
table.Columns.Add("UTC Date", typeof(DateTime));
table.Columns.Add("Local Date", typeof(DateTime));
table.Columns.Add("UTC From Local", typeof(DateTime));
dataGridView1.DataSource = table;
DateTime aux;
DataRow newRow = table.NewRow();
aux = new DateTime(2016, 11, 06, 06, 30, 0, DateTimeKind.Utc);
newRow["UTC Date"] = aux;
newRow["Local Date"] = aux.ToLocalTime();
newRow["UTC From Local"] = Convert.ToDateTime(newRow["Local Date"]).ToUniversalTime(); table.Rows.Add(newRow);
値は次のようになります。
UTC日:2016年11月6日6:30
現地日:2016年11月6日1:30
現地からUTC:2016年11月6日7:30
あなたが見ることができるようにコラム「ローカルからUTC」は間違っているか、少なくとも私は、午前6時30分(考慮DSTを期待します)で、7:30(DSTなし)ではありません。
help ?????
ありがとう!それは働いた、私は実際のアプリにこのソリューションを実装しようとすると、私が投稿したものがまさに例であった。あなたのソリューションを読んで、私は 'ToLocalTime()'を使ってもDST情報を失わないと思うことができます。問題は、 'DateTimeMode'を指定しなかったDataTableを作成するときでした。 –