gpt4 book ai didi

c# - 如何在将 datetime 对象存储到数据表中时保留 DateTime Kind?

转载 作者:太空狗 更新时间:2023-10-29 20:08:48 24 4
gpt4 key购买 nike

我在将 DateTime 对象存储到数据表时遇到问题,它丢失了其中设置的种类信息。例如,如果 DateTime.Kind 是 UTC,一旦我将它分配给数据行值,它就会将种类更改为未指定。请在下面找到代码。

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

你能告诉我一个解决方法吗?

谢谢!!!

最佳答案

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 格式将日期存储在数据库中,这应该无关紧要。

关于c# - 如何在将 datetime 对象存储到数据表中时保留 DateTime Kind?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3990809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com