2013-03-22 85 views
2

在Silverlight应用程序中,如果我知道时区标识,那么如何获取当前时区或当前时间的UTC偏移?如何在Silverlight中的其他时区获取本地时间

如果我在东海岸,并且想知道当前UTC时间或亚利桑那州当前时间,我如何在Silverlight中执行此操作?

这是不可用在Silverlight:

var AZTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(SomeDatetime, "US Mountain Standard Time"); 
+0

您是否尝试过'DateTime.UtcNow'这里还有一个很好的例子,您可以尝试它也检查'夏令时'http://www.c-sharpcorner.com/UploadFile/mahesh/TimeZoneSample12142005103321AM/TimeZoneSample。 aspx – MethodMan 2013-03-22 17:51:28

+0

显然,Silverlight TimeZoneInfo只支持两个预定义的时区,[Local](http://msdn.microsoft.com/en-us/library/system.timezoneinfo.local(v = vs.95).aspx)和[ UTC](http://msdn.microsoft.com/en-us/library/system.timezoneinfo.utc(v = VS.95)的.aspx)。 .NET TimeZoneInfo的[Id](http://msdn.microsoft.com/en-us/library/system.timezoneinfo.id.aspx)属性没有任何内容。据我了解,它根本无法处理其他时区。 – Clemens 2013-03-22 18:09:29

+0

您可能想要取消我的答案,让我删除它,这似乎是错误的(我没有真正帮助你,是吗?)。 – John 2014-01-09 16:17:16

回答

0

编辑:我似乎已经犯了一个错误,下面的答案是WPF。我不知道有什么方法可以解决Silverlight中的问题,我无法删除这个答案。

这个工作对我来说:

TimeZoneInfo GermanTimeZone = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"); 
var dateTimeInBerlin = TimeZoneInfo.ConvertTimeFromUtc(utc, GermanTimeZone); 

区名在Windows注册表中设置的时间:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones 
+2

虽然不在Silverlight中... – marcslogic 2014-01-08 11:47:09

+1

@marcslogic你看起来是对的。 – John 2014-01-08 13:43:56

+0

@marcslogic奇怪,我无法删除答案,因为它被接受... – John 2014-01-08 13:44:57

1

,您可以拨打服务为Silverlight的应用程序,并没有任何的转换因为服务器的.Net代码具有所有时区功能。然后只需要Silverlight客户端在需要转换时调用该服务。