提交后服务器 - 客户端的时差

时间:2011-12-05 08:35:08

标签: c# silverlight datetime

我有一个用于代理评估的Silverlight应用程序。在进行评估时,DateTime会正确显示,但在我稍后想要编辑它的评估后,我会看到有-5小时的差异。客户端来自加拿大,但服务器似乎在其他地方。我已经阅读了一些(必须使用UTCDateTime),但它有点难以测试,因为必须部署应用程序进行测试,以便我不想在黑暗中拍摄。

任何帮助?

编辑:这是我创建评估的方式

CurrentEvaluation = new Evaluation();
CurrentEvaluation.CreatedBy = UserID;
CurrentEvaluation.CreatedDate = DateTime.Now;
CurrentEvaluation.EvaluatorID = UserID;
CurrentEvaluation.EvaluationDate = DateTime.Now;
CurrentEvaluation.UserID = CurrentUser.UserID;
CurrentEvaluation.TenantID = CurrentTenant.TenantID;

仅仅说CurrentEvaluation.EvaluationDate = DateTime.Now.ToUniversalTime();然后将其转换回当地时间就够了吗?

1 个答案:

答案 0 :(得分:1)

对于您的具体示例,这可能有点过分,但在处理源自不同时区(与服务器不同或客户端之间)的日期/时间时,最好使用新的DateTimeOffset结构存储它们在Silverlight 3中引入了SQL Server 2008 R2的datetimeoffset字段类型。

这使您不仅可以确定“通用时间”,还可以了解相对于任何给定客户的时间

当RIA服务首次出现时,它不支持DateTimeOffset类型(因此我们不得不提供涉及DateTime和int偏移的修复),但在后来的RIA服务包中已经纠正了这一点,因此您可以使用DateTimeOffsets作为它们打算。