【发布时间】:2013-07-04 10:04:47
【问题描述】:
我有一个 LINQ to SQL 数据上下文,其中包含一个具有两个日期属性的类:
DateActive DateTime NOT NULL
DateInactive DateTime NULL
MSDN 明确指出:
LessThanOrEqual 运算符通过比较两个 DateTime 值的刻度数来确定它们之间的关系。在比较 DateTime 对象之前,请确保对象代表同一时区的时间。您可以通过比较它们的 Kind 属性的值来做到这一点。
http://msdn.microsoft.com/en-us/library/system.datetime.op_lessthanorequal.aspx
但在我的 LINQ 查询中,上述两个字段显示为 DateTimeKind.Unspecified,我正在与 Date.Today 进行比较,即 DateTimeKind.Local。
有没有一种很好的方法可以在整个应用程序中将上述属性指定为DateTimeKind.Local,这样我就不必像i.DateActive.ToLocalTime.Date 和i.DateInactive.Value.ToLocalTime.Date 那样到处转换?
我使用的是 .NET 4 而不是 .NET 4.5,所以我假设同样适用。
【问题讨论】:
-
为什么要更改数据库值的 DateTimeKind?
-
按照 MSDN 的说法...我想要在我的应用程序中明确指出来自数据库的日期是本地日期时间而不是 UTC 日期时间。
-
两者都不是 - 他们没有时区。实际上,如果您始终将它们视为本地,则无需进行任何转换
标签: .net linq linq-to-sql .net-4.0 datacontext