正如标题所示,在分配具有时区UTC的DateTime对象后,分配给DataRow时会丢失其TimeZone信息。将DateTime分配给DataRow时,C#TimeZone信息丢失
static void Main(string[] args)
{
DateTime universalTime = DateTime.UtcNow;
DataTable table = new DataTable();
table.Columns.Add("Time", typeof(DateTime));
DataRow row = table.NewRow();
row["Time"] = universalTime;
/* writes Kind: Utc */
Console.WriteLine("Universal time : " + universalTime + ", kind: " + universalTime.Kind);
/* writes Kind: Unspecified */
Console.WriteLine("Same time in DataRow: " + row["Time"] + ", kind: " + ((DateTime)row["Time"]).Kind);
Console.ReadKey();
}
分配给DataRow后,它说Kind = Unspecified。
这是DataRow中的错误还是我在这里做错了?
似乎它已经回答[http://stackoverflow.com/questions/3990809/how-to-persist-datetime-kind-while-storing-a-datetime-object -into-a-data-table] – Rwiti
重要吗?为了在数据库中存储时间,存储为UTC是唯一有意义的格式。 – spender
dup文件有答案,但也要注意'Kind'并不能真正保留时区信息。这只是一个规则,说明在与时区功能交互时如何处理该值。无论如何,在保存数据时通常不会持续存在。你可以把UTC看作是一个时区,但是Local或Unspecified类型有点不同。如果持久性是你所追求的,你可能想看看'DateTimeOffset'。即使您的偏移量为零,它至少会以这种方式坚持而不会丢失。 –