我遇到的问题是我将datetime存储为utc,方法如下:
container.DateToStore = DateTime.UtcNow;
我正在使用数据库第一种方法。这意味着当我从数据库更新模型时,我的实体模型会被重新创建。这意味着修改模型的任何解决方案都需要考虑正在重新创建的模型(即外部分部类中的代码)。我的代码正确地查看了这个并且具有DateTime DateType的Utc的正确“kind”值。当我将它保存到数据库时,它看起来像正确的UTC值。但是,当从数据库中检索值并将其设置为另一个变量时,“kind”值将丢失。现在没有了。
DateTimeToPassToOutisideSystem = DateTimeFromDatabaseEntity
DateTimeToPassToOutsideSystem.Kind =此时未知。外部系统将其转换为UTC并为我传递的内容增加数小时。
我希望每次尝试使用该值时都避免让我的代码修改DateTime区域问题。
DateTimeToSend = new DateTime(MyDateTimeFromDb.Value.Ticks, DateTimeKind.Utc);
我可以在sql中设置数据类型,以便在创建Entitiy模型时自动将其识别为utc吗?或者我是否需要构建某种类型的Extension方法来处理这个问题。
注意:我发现一种简单的方法来处理这个问题只是为了在DateTime对象上添加一个扩展方法。它很简单,适用于我的目的:这是代码:
public static class DateTimeExtensions
{
public static DateTime SetKindAsUtc(this DateTime dt)
{
return DateTime.SpecifyKind(dt, DateTimeKind.Utc);
}
}
现在,当我知道时间是UTC时但是'Kind'属性设置不正确时,我称之为:
outSideDateTimeValue = MyDateTime.SetKindAsUtc();