1

我的应用程序已经到了要尝试推出 UTC 支持的地步。

我已经完成了所有工作,并为自己编写了两个实用程序类,称为 convertToUtc 和 convertFromUtc。我想你可以猜到他们在做什么。

我在想什么,我可以将这些构建到 linq-to-sql 创建的对象模型上的 date 属性的 getter 和 setter 方法中,还是应该在应用程序各处重新分配值的保存方式(添加控制器的额外线路,如

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

如果有人能告诉我,每次我需要用户 Guid 时都返回数据库,我正在做一些可怕的事情,那就太酷了。我想我会在某个地方缓存它,但这需要在会话中保持它或我认为的东西。

谢谢大家。

4

1 回答 1

1

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

从 UTC 时间到本地时间的转换 [大部分] 是一个渲染问题,应该在您的 UI 层中处理。

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

于 2009-12-04T05:47:03.023 回答