我希望设置一个'Timezone'环境变量,它将由.NET可执行文件代替默认文件。来自环境变量的.NET时区
具体而言,TimeZone.CurrentTimeZone()
将返回覆盖的时区信息,而不是默认值。
我知道这可以在C++中使用'TZ'变量来完成。 .Net中是否有可能?
更新
对不起,我不是这个更加清晰:我没有访问源代码。基本上,我想要的是运行一个可执行文件,欺骗它认为时区不是机器的默认值。
我希望设置一个'Timezone'环境变量,它将由.NET可执行文件代替默认文件。来自环境变量的.NET时区
具体而言,TimeZone.CurrentTimeZone()
将返回覆盖的时区信息,而不是默认值。
我知道这可以在C++中使用'TZ'变量来完成。 .Net中是否有可能?
更新
对不起,我不是这个更加清晰:我没有访问源代码。基本上,我想要的是运行一个可执行文件,欺骗它认为时区不是机器的默认值。
Environment.GetEnvironmentVariable方法允许您从.NET代码中检索任何环境变量的值。但是,您必须使用外部机制将环境变量设置在第一个位置,同时变量的值可以是任何字符串,因此您必须验证所获取值的格式。
您可以使用System.Environment.GetEnvironmentVariable("Timezone")
方法获取环境变量。
具体来说,TimeZone.CurrentTimeZone()将返回覆盖的时区信息,而不是默认值。
这将是棘手。
这很可能是太多侵入性较弱,以传递系统时区ID并使用TimeZoneInfo.FindSystemTimeZoneById
。然后明确使用,每次你需要“默认时区”而不是依靠真实系统默认的时区。
基本上你应该尽可能放弃TimeZone
。与TimeZoneInfo
相比,它功能非常差。 (我个人也会放弃TimeZoneInfo
,并使用我的Noda Time项目,但这是一个稍微不同的问题;)
根据文档,该表达式将始终返回Windows控制面板http://msdn.microsoft中指定的时区.COM/EN-GB /库/ system.timezoneinfo.local.aspx – 2013-03-18 12:04:52