如何在Silverlight中处理日期时间和时区?
我正在使用SQLAzure开发Silverlight应用程序。据我所知,如果未指定如何在Silverlight中处理日期时间和时区?,silverlight,wcf,datetime,timezone,azure,Silverlight,Wcf,Datetime,Timezone,Azure,我正在使用SQLAzure开发Silverlight应用程序。据我所知,如果未指定DateTimeKind,Silverlight会将其更改为Local,并将其作为UTC时间保存到Azure 一切正常,但当我从SQLAzure获取DateTime数据时,它的类型是Unspecified,Silverlight在UI上显示时不会转换回Local时间 例如:我在罗马使用我的应用程序(UTC+1),我将日期设置为15:00,然后保存到数据库。在数据库中,它将另存为14:00(UTC) 现在我打开页面编
DateTime
Kind,Silverlight会将其更改为Local
,并将其作为UTC时间保存到Azure
一切正常,但当我从SQLAzure获取DateTime
数据时,它的类型是Unspecified
,Silverlight在UI上显示时不会转换回Local
时间
例如:我在罗马使用我的应用程序(UTC+1),我将日期设置为15:00,然后保存到数据库。在数据库中,它将另存为14:00(UTC)
现在我打开页面编辑数据,它从数据库中查询14:00,带有未指定的
种类,并且在页面中显示14:00,这显然是不正确的
我试图在DomainService设置DateTime
kind(在将这些数据返回到客户端之前),方法是检查其种类是否未指定,然后将其设置为UTC。这一次,当我在我的页面上更改日期时间时,它的类型总是UTC
似乎silverlight只有在其种类为未指定时才会转换日期,否则它什么也不做,它也无法从数据库转换DateTime
以正确显示,即使那些DateTime
具有种类
我想知道,这个问题有什么解决方案或解决方法吗?如果您知道它存储在UTC中,您是否尝试过设置datetime,然后使用Silverlight显式转换为本地时间?我不熟悉Silverlight,但在.NET的其他形式中,您必须为UI操作显式地执行此转换
DateTime dt = GetDateFromDB();
dt = dt.SpecifyKind(DateTimeKind.UTC);
DateTime dtAsLocal = dt.ToLocalTime();
我尝试过这样做,它会正确地显示在UI上,但当我在UI中更改datetime并保存到数据库中时,它不会从本地转换为UTC。例如,如果我将罗马的datetime(UTC+1)设置为15:00:00,它将以15:00:00而不是14:00:00的形式保存到数据库中。您是否可以共享用于进行保存准备的代码?我知道我的问题,有人不使用绑定,而是将datePicker.SelectedDate值直接设置为datetime,在这种情况下,没有DateTimeKind。SpecifyKind不是静态方法吗?