我正在使用 Silverlight,但遇到了问题。在我的数据库中,我存储了一些格式为 yyyy/mm/dd 00:00:00 的日期,这意味着我只存储年、月和日,将时间设为 00:00:00。
当客户端执行操作并发送到服务器时,我得到 DateTime.Today,它将保持我的数据库日期的格式,但是当它是 sendind 时,我得到 yyyy/mm/dd 22:00:00,所以当我的服务器端函数获取日期,它不会从数据库返回任何值。
如何解决此问题以获得正确的日期时间?
谢谢
我正在使用 Silverlight,但遇到了问题。在我的数据库中,我存储了一些格式为 yyyy/mm/dd 00:00:00 的日期,这意味着我只存储年、月和日,将时间设为 00:00:00。
当客户端执行操作并发送到服务器时,我得到 DateTime.Today,它将保持我的数据库日期的格式,但是当它是 sendind 时,我得到 yyyy/mm/dd 22:00:00,所以当我的服务器端函数获取日期,它不会从数据库返回任何值。
如何解决此问题以获得正确的日期时间?
谢谢
使用 UTC 时间来确保您不会遇到时区问题。
您可以通过检查 Kind 属性来查看 DateTime 是 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()
我希望这有帮助。