C# 如何在将DateTime对象存储到数据表中时保持DateTime类型?

C# 如何在将DateTime对象存储到数据表中时保持DateTime类型?,c#,datetime,datatable,C#,Datetime,Datatable,我在将DateTime对象存储到datatable中时遇到了一个问题,它会释放其中的种类信息集。例如,如果DateTime.Kind是UTC,一旦我将其分配给datarow值,它就会将种类更改为Unspecified。请查找下面的代码 public class LocalTimeToUtcConverter { public DateTime Convert(DateTime localDate) { var utcOffset =

我在将DateTime对象存储到datatable中时遇到了一个问题,它会释放其中的种类信息集。例如,如果DateTime.Kind是UTC,一旦我将其分配给datarow值,它就会将种类更改为Unspecified。请查找下面的代码

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;
        }
public类localtimetoutconverter
{
公共日期时间转换(日期时间本地日期)
{
var utcOffset=TimeZoneInfo.Local.GetUtcOffset(localDate);
var utc=localDate.ToUniversalTime();
返回utc+utcOffset;
}
}
[测试]
public void应该设置为utc()
{            
var localDate=新的日期时间(2010,11,01,00,00,00);
Assert.That(localDate.Kind==DateTimeKind.Unspecified);
var converter=新的LocalTimeToutConverter();
DateTime date=converter.Convert(localDate);
Assert.That(localDate.Kind==DateTimeKind.Utc);
var data=CreateTable(日期);
//失败的原因是什么????
Assert.That(((DateTime)data.Rows[0].ItemArray[0]).Kind==DateTimeKind.Utc);
}
专用数据表CreateTable(日期时间日期)
{            
DataTable=新的DataTable();
table.Columns.Add(新数据列(“Date1”,typeof(DateTime)));
对于(int i=0;i<10;i++)
{
var newRow=table.newRow();
newRow[0]=日期;
table.Rows.Add(newRow);
}
返回表;
}
你能告诉我一个解决方法吗

谢谢

table.Columns.Add(新数据列(“Date1”,typeof(DateTime)))

使用DataColumn.DateTimeMode属性:

var col = new DataColumn("Date1", typeof(DateTime));
col.DateTimeMode = DataSetDateTime.Utc;
table.Columns.Add(col);
如果您在数据库中以UTC格式存储日期,这应该无关紧要