1

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

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

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

谢谢

4

3 回答 3

1

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

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

于 2012-07-06T11:23:02.513 回答
0

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

你是在推送之前在客户端序列化它吗?客户端和服务器时区有什么区别?

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

高温高压

于 2012-07-06T11:20:35.427 回答
0

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

DateTime.UtcNow.Date

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

DateTime.ToLocalTime().Date

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

GETUTCDATE()

我希望这有帮助。

于 2012-07-06T11:35:16.453 回答