我正在使用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()
我希望这有所帮助。