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

时间:2012-07-06 10:59:08

标签: silverlight datetime timezone

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

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

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

谢谢

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

DateTime结构在序列化时很容易出现DST,时区和文化。

你是否在推送它之前在客户端串行化?客户端和服务器时区之间有什么区别?

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

HTH

答案 2 :(得分:0)

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

DateTime.UtcNow.Date

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

DateTime.ToLocalTime().Date

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

GETUTCDATE()

我希望这会有所帮助。