我有一個數據網格是使用來自UTC值轉換爲本地時間的DateTime列進行排序的。問題在於DST,因爲在一年中有1個小時將會重複(從11月6日2:00:00 AM返回到1:00:00 AM)。我已經實現了一種方法來使用從IComparable繼承的類來比較列,並手動比較使用ToUniversalTime()再次轉換它們的日期,但它會返回錯誤的值。以更好地解釋讓我給個例子:本地時間到UTC保持DST
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 AM
本地日期:2016年11月6日上午1:30
UTC從地方:2016年11月6日上午7:30
正如你可以看到列「UTC從本地」是錯誤的,或者至少我希望6:30(DST考慮)而不是7:30(不含DST)。
任何幫助?????
非常感謝!它的工作,讓我嘗試實現這個解決方案的真正的應用程序,因爲我發佈的只是一個例子。所以通過閱讀你的解決方案,我可以假設使用'ToLocalTime()'不會丟失DST信息,問題是在創建DataTable時我沒有指定'DateTimeMode' –