发送到服务器时 DateTime.Today 值已更改



我正在使用Silverlight,遇到了问题。在我的数据库中,我以这样的格式存储了一些日期 yyyy/mm/dd 00:00:00,这意味着我只存储年、月和日,将时间定为

00:00:00。

当客户端执行操作并发送到服务器时,我得到 DateTime.Today 它将保持我的数据库日期的格式,但是当它被发送时,我得到 yyyy/mm/dd 22:00:00,所以当我的服务器端函数获取日期时,它不会从数据库中返回任何值。

如何解决此问题以获得正确的日期时间?

谢谢

使用 UTC 时间以确保您不会遇到时区问题。

您可以通过检查 Kind 属性来查看日期时间是基于 UTC 还是基于本地的,并且可以通过 DateTime.UtcNow 获取当前 UTC 时间。

DateTime 结构在序列化时非常容易受到 DST、时区和区域性的影响。

您是否在推送之前在客户端对其进行序列化? 客户端和服务器时区有什么区别?

我建议您尝试使用DateTime.UtcNow,然后序列化数据。 我更喜欢使用固定文化进行序列化

除了在数据库中存储 UTC 时间之外,还可以使用 DateTime 类的 Date 属性将所有日期值的时间硬设置为 12:00:00。

DateTime.UtcNow.Date

您可以使用 ToLocalTime 方法以用户的本地时区向用户显示日期:

DateTime.ToLocalTime().Date

我确信每个数据库引擎都有一个类似的函数,但是获取UTC日期的SQL Server函数是(令人惊讶的是):

GETUTCDATE()

我希望这有所帮助。

相关内容

  • 没有找到相关文章

最新更新