【发布时间】:2017-04-09 10:50:19
【问题描述】:
我有一个使用 DateTime 列排序的数据网格,该列来自转换为本地时间的 UTC 值。问题在于 DST,因为一年中有 1 个小时会重复(从 11 月 6 日凌晨 2:00:00 回到凌晨 1:00:00)。我已经实现了一种使用从 IComparable 继承的类来比较列的方法,并手动比较使用 ToUniversalTime() 再次转换它们的日期,但它返回错误的值。为了更好地解释,让我举个例子:
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 From Local”列是错误的,或者至少我预计 6:30(考虑 DST)而不是 7:30(没有 DST)。
有什么帮助吗??????
【问题讨论】: