我希望设置一个“时区”环境变量,它将由 .NET 可执行文件而不是默认的可执行文件拾取。
具体来说,TimeZone.CurrentTimeZone()
将返回最重要的时区信息,而不是默认值。
我知道这可以在 C++ 中使用“TZ”变量来完成。在.Net中也可以吗?
更新
很抱歉没有更清楚地说明这一点:我无权访问源代码。基本上,我想要的是运行一个可执行文件,让它认为时区不是机器的默认值。
具体来说, TimeZone.CurrentTimeZone() 将返回最重要的时区信息,而不是默认值。
这会很棘手。
传递系统时区 ID 并使用TimeZoneInfo.FindSystemTimeZoneById
. 然后在每次需要“默认时区”时明确使用它,而不是依赖真正的系统默认时区。
TimeZone
基本上你应该尽可能地放弃。与TimeZoneInfo
. (就我个人而言,我也会放弃TimeZoneInfo
并使用我的Noda Time项目,但这是另一回事;)
Environment.GetEnvironmentVariable方法允许您从 .NET 代码中检索任何环境变量的值。但是,您必须使用外部机制在第一个位置设置环境变量,变量的值也可以是任何字符串,因此您必须验证获得值的格式。
您可以使用方法获取环境变量System.Environment.GetEnvironmentVariable("Timezone")
。