C# 更改时区并不反映.NET Compact Framework中的时间更改

C# 更改时区并不反映.NET Compact Framework中的时间更改,c#,.net,compact-framework,windows-ce,C#,.net,Compact Framework,Windows Ce,我正在开发.Net Compact FrmeworkCF应用程序。我这个应用程序的要求是,我应该能够改变时区。但是,当我更改时区时,当前时间不会更改为该特定时区。从网上我了解到DateTime。现在在这种情况下无法工作 我正在使用以下Win API: 设置时区信息…-在运行时设置时区。 GetLocalTime…-获取本地时间w.r.t当前时间 区 有谁能告诉我可能出了什么问题吗?以这种方式更改应用程序的时区不会更改本地时间:相反,它会更改系统时间以保持本地时间不变。这不是控制面板所做的,但如果

我正在开发.Net Compact FrmeworkCF应用程序。我这个应用程序的要求是,我应该能够改变时区。但是,当我更改时区时,当前时间不会更改为该特定时区。从网上我了解到DateTime。现在在这种情况下无法工作

我正在使用以下Win API:

设置时区信息…-在运行时设置时区。 GetLocalTime…-获取本地时间w.r.t当前时间 区
有谁能告诉我可能出了什么问题吗?

以这种方式更改应用程序的时区不会更改本地时间:相反,它会更改系统时间以保持本地时间不变。这不是控制面板所做的,但如果要模拟控制面板功能,则需要执行以下操作:

节省系统时间 改变时区 恢复节省的系统时间 这样,系统时间保持不变,本地时间根据所选时区而变化


顺便说一句,我们使用OpenNETCF库在我们的一个产品中实现了这一点,该库包括一个DateTimeHelper类和许多其他有用的东西,而社区版是免费的。这比编写自己的pinvoke来访问SetTimeZone信息要简洁一点,功能是一样的。

用这种方式更改应用程序的时区不会更改本地时间:而是更改系统时间以保持本地时间不变。这不是控制面板所做的,但如果要模拟控制面板功能,则需要执行以下操作:

节省系统时间 改变时区 恢复节省的系统时间 这样,系统时间保持不变,本地时间根据所选时区而变化


顺便说一句,我们使用OpenNETCF库在我们的一个产品中实现了这一点,该库包括一个DateTimeHelper类和许多其他有用的东西,而社区版是免费的。这比编写自己的pinvoke来访问SetTimeZone信息要简洁一点,功能是一样的。

这是出于设计,它避免了依赖于稳定增长的时钟的代码遭受心脏病发作。解决方法是在更改时区后显式调用CultureInfo.CurrentCulture.ClearCachedData。或者重新启动应用程序。

这是出于设计,它避免了依赖于稳定增长的时钟的代码患心脏病。解决方法是在更改时区后显式调用CultureInfo.CurrentCulture.ClearCachedData。或者重新启动应用程序。

我也有同样的问题。在我不改变时间而改变时区的情况下,我使用了以下代码:

DateTime dateTime = DateTime.Now;
TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
TimeSpan currentOffset = timeZone.BaseUtcOffset.Duration();
DateTimeOffset offset = new DateTimeOffset(dateTime, currentOffset);
我有GMT+2时区。例如,2012年7月11日14:00+02:00


使用此代码后,我有GMT+1与同一时间。2012年11月7日14:00+01:00。

我也有同样的问题。在我不改变时间而改变时区的情况下,我使用了以下代码:

DateTime dateTime = DateTime.Now;
TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
TimeSpan currentOffset = timeZone.BaseUtcOffset.Duration();
DateTimeOffset offset = new DateTimeOffset(dateTime, currentOffset);
我有GMT+2时区。例如,2012年7月11日14:00+02:00


使用此代码后,我有GMT+1与同一时间。2012年11月7日14:00+01:00。

我尝试清除缓存数据,但最终失败。我尝试清除缓存数据,但最终失败。