2013-03-18 71 views
0

我希望设置一个'Timezone'环境变量,它将由.NET可执行文件代替默认文件。来自环境变量的.NET时区

具体而言,TimeZone.CurrentTimeZone()将返回覆盖的时区信息,而不是默认值。

我知道这可以在C++中使用'TZ'变量来完成。 .Net中是否有可能?

更新

对不起,我不是这个更加清晰:我没有访问源代码。基本上,我想要的是运行一个可执行文件,欺骗它认为时区不是机器的默认值。

+0

根据文档,该表达式将始终返回Windows控制面板http://msdn.microsoft中指定的时区.COM/EN-GB /库/ system.timezoneinfo.local.aspx – 2013-03-18 12:04:52

回答

0

Environment.GetEnvironmentVariable方法允许您从.NET代码中检索任何环境变量的值。但是,您必须使用外部机制将环境变量设置在第一个位置,同时变量的值可以是任何字符串,因此您必须验证所获取值的格式。

0

您可以使用System.Environment.GetEnvironmentVariable("Timezone")方法获取环境变量。

4

具体来说,TimeZone.CurrentTimeZone()将返回覆盖的时区信息,而不是默认值。

这将是棘手。

这很可能是太多侵入性较弱,以传递系统时区ID并使用TimeZoneInfo.FindSystemTimeZoneById。然后明确使用,每次你需要“默认时区”而不是依靠真实系统默认的时区。

基本上你应该尽可能放弃TimeZone。与TimeZoneInfo相比,它功能非常差。 (我个人也会放弃TimeZoneInfo,并使用我的Noda Time项目,但这是一个稍微不同的问题;)