2013-03-18 65 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項目,但這是一個稍微不同的問題;)