如何在Silverlight中处理DateTime和TimeZone?

时间:2011-02-03 03:10:44

标签: silverlight wcf datetime timezone azure

我正在使用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已有样。

我想知道,有什么解决方案可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

如果您知道它以UTC格式存储,您是否尝试过设置日期时间,那么使用Silverlight显式转换为本地时间?我不熟悉Silverlight,但在其他形式的.NET中,您必须明确地为UI操作执行此转换。

DateTime dt = GetDateFromDB();

dt = dt.SpecifyKind(DateTimeKind.UTC);

DateTime dtAsLocal = dt.ToLocalTime();