How to save DateTime Kind when saving datetime object in data table?

Im facing the problem of storing a DateTime object in a datatable, it loses the type information set in it. For example, if DateTime.Kind is UTC, as soon as I set it to datarow, it will change to Unspecified. Please find the code below.

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; } 

Please tell me a workaround for this?

Thanks!!!

+6
c # datetime datatable
source share
1 answer

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

Use the DataColumn.DateTimeMode property:

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

It doesnโ€™t matter if you store dates in your database in UTC, just like you do.

+8
source share

All Articles