代码之家  ›  专栏  ›  技术社区  ›  Chris Barry

Asp.netMVC覆盖linqtosql的默认getter和setter,用于进行UTC转换

  •  1
  • Chris Barry  · 技术社区  · 15 年前

    我已经完成了所有的工作,并为自己编写了两个实用程序类,分别是convertToUtc和convertFromUtc。我想你能猜到他们在干什么。

    不过,我在想,我可以把这些方法构建到linqtosql创建的对象模型上的date属性的getter和setter方法中,还是应该到处查看应用程序,重新分配值的保存方式(在控制器上添加一个额外的行,比如

    task.taskDeadline = Utility.ConvertToUtc(aspnet_Repository.GetUserGuid(User.Identity.Name), task.taskDeadline.Value);
    

    谢谢大家。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Ian Mercer    15 年前

    您应该始终将日期时间作为UTC值存储在数据库中(如果您知道对象的真正UTC时间),而不是作为本地时间值。

    从UTC时间到localtime的转换[主要]是一个应该在UI层中处理的呈现问题。

    后一个规则的一个例外是,当您尝试按用户的日期时间分组时(例如,昨天或上个月发生的事情),在这种情况下,UI需要将时区向下传递到业务层,甚至可能传递到数据库,以便执行按日期时间的本地表示进行分组的高效查询。