我希望设置一个'Timezone'环境变量,它将由。net可执行文件选择,而不是默认的。
具体来说,TimeZone.CurrentTimeZone()
将返回覆盖的时区信息,而不是默认的。
我知道这可以在c++中完成,使用'TZ'变量。在。net中也可能吗?
很抱歉没有更清楚地说明这一点:我没有访问源代码。基本上,我想要的是运行一个可执行文件,让它认为时区不是机器的默认时区。
具体来说,timezone . currenttimezone()将返回覆盖的时区信息,而不是默认的。
这会很棘手。
传递系统时区ID并使用TimeZoneInfo.FindSystemTimeZoneById
的侵入性可能小得多。然后显式地在每次需要"默认时区"时使用它,而不是依赖于实际的系统默认时区。
基本上你应该尽可能放弃TimeZone
。与TimeZoneInfo
相比,它的功能很差。(我个人也会放弃TimeZoneInfo
并使用我的Noda Time项目,但这是一个稍微不同的问题;)
环境。GetEnvironmentVariable方法允许您从。net代码检索任何环境变量的值。但是,您必须首先使用外部机制来设置环境变量,而且变量的值可以是任何字符串,因此您必须验证获得值的格式。
您可以使用System.Environment.GetEnvironmentVariable("Timezone")
方法获取环境变量