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