Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Silverlight中处理日期时间和时区?_Silverlight_Wcf_Datetime_Timezone_Azure - Fatal编程技术网

如何在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) 现在我打开页面编

我正在使用SQLAzure开发Silverlight应用程序。据我所知,如果未指定
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不是静态方法吗?