我正在使用SQL Azure处理Silverlight应用程序。据我所知,DateTime
Kind未指定,Silverlight会将其更改为Local
,并将其保存为UTC时间。
一切正常,但当我从SQL Azure获取DateTime
数据时,它的种类为Unspecified
,而Silverlight在UI上显示时不会转换回Local
时间。
例如:我在罗马使用我的应用程序(UTC +1),我将日期设置为15:00然后保存到数据库。在数据库中,它将保存为14:00(UTC)。
现在我打开页面编辑该数据,它从数据库查询为14:00,Unspecified
种类,它也显示在页面14:00,这显然是不正确的。
我尝试在DomainService上设置DateTime
种类(在将这些数据返回给客户端之前),检查其类型是否未指定,将其设置为UTC。这次当我在我的页面上更改DateTime时,其类型始终为UTC。
似乎silverlight只会在类型为Unspecified
的情况下转换日期,否则它什么都不做,它也无法将DateTime
从数据库转换为正确显示,即使那些DateTime
已有样。
我想知道,有什么解决方案可以解决这个问题吗?
答案 0 :(得分:2)
如果您知道它以UTC格式存储,您是否尝试过设置日期时间,那么使用Silverlight显式转换为本地时间?我不熟悉Silverlight,但在其他形式的.NET中,您必须明确地为UI操作执行此转换。
DateTime dt = GetDateFromDB();
dt = dt.SpecifyKind(DateTimeKind.UTC);
DateTime dtAsLocal = dt.ToLocalTime();