I’m facing an issue with storing the DateTime object into a datatable, it looses the Kind information set into it.For example if the DateTime.Kind is UTC, once I assign it to the datarow value it changes the Kind 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 can you tell me a workaround for this?
Thanks!!!
CSharp Online Training The DateTime. SpecifyKind() method in C# is used to create a new DateTime object that has the same number of ticks as the specified DateTime but is designated as either local time, Coordinated Universal Time (UTC), or neither, as indicated by the specified DateTimeKind value.
The Kind property allows a DateTime value to clearly reflect either Coordinated Universal Time (UTC) or the local time. In contrast, the DateTimeOffset structure can unambiguously reflect any time in any time zone as a single point in time.
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);
This shouldn't matter if you store dates in your dbase in UTC, like you should.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With