2010-10-21 29 views
6

我面臨着存儲DateTime對象到DataTable的問題,它失去套入it.For示例那樣的信息,如果該DateTime.Kind是UTC,一旦我把它分配給數據行的值它改變了一種對未指定請找到下面的代碼。如何堅持的DateTime類,同時存儲DateTime對象到數據表?

public class LocalTimeToUtcConverter 
    { 
     public DateTime Convert(DateTime localDate) 
     { 
      var utcOffset = TimeZoneInfo.Local.GetUtcOffset(localDate); 

      var utc = localDate.ToUniversalTime(); 

      return utc + utcOffset; 
     } 
    } 

[Test] 
     public void Should_set_datetime_column_kind_to_utc() 
     {    
      var localDate = new DateTime(2010, 11, 01, 00, 00, 00); 
      Assert.That(localDate.Kind == DateTimeKind.Unspecified); 
      var converter = new LocalTimeToUtcConverter(); 
      DateTime date = converter.Convert(localDate); 
      Assert.That(localDate.Kind == DateTimeKind.Utc); 
      var data = CreateTable(date); 
      //Failes-Why???? 
      Assert.That(((DateTime)data.Rows[0].ItemArray[0]).Kind == DateTimeKind.Utc); 
     } 

     private DataTable CreateTable(DateTime date) 
     {    
      DataTable table = new DataTable();    
      table.Columns.Add(new DataColumn("Date1", typeof(DateTime))); 

      for (int i = 0; i < 10; i++) 
      { 
       var newRow = table.NewRow(); 
       newRow[0] = date; 
       table.Rows.Add(newRow); 
      } 

      return table; 
     } 

請你能告訴我一個解決方法嗎?

謝謝!

回答

8

table.Columns.Add(new DataColumn(「Date1」,typeof(DateTime)));

使用DataColumn.DateTimeMode屬性:

var col = new DataColumn("Date1", typeof(DateTime)); 
col.DateTimeMode = DataSetDateTime.Utc; 
table.Columns.Add(col); 

如果您在質數據庫存儲日期UTC中,應該像你這不應該的問題。

相關問題