2017-10-13 57 views
2

我在這裏有一個很奇怪的。程序沒有遵循Windows機器的日期格式(它可以被覆蓋的地方嗎?)

在一個簡單的Windows窗體應用程序我寫了下面的C#代碼

MessageBox.Show("Todays date is: "+DateTime.Today.ToShortDateString()); 

運行這通常只是顯示由Windows指定的格式的日期(在該區域設置)。 (所以在我的機器設置爲丹麥本地,它顯示日期爲dd-MM-yyyy => 13-10-2017)這是預期的。

但我有一個客戶的服務器(Windows Server 2012),如果情況並非如此。在他們的設置中,Windows區域設置與我的一樣(dd-MM-yyyy),但儘管上面的簡單代碼顯示爲MM/dd/yyyy => 10/13/2017這是美式格式。

我只是不明白這一點,使它更神祕,它只是對這個服務器上的一些Windows用戶(有些顯示格式爲窗口中的時鐘和其他格式不變)。

我一直在Google上搜索,如果有某種.NET設置可以覆蓋用戶級別但沒有發現任何東西。

代碼中沒有什麼文化和任何特殊的東西(只是文件>新項目> Winform [Targeting .net 4.5]和上面的代碼行)。

+0

你想尊重窗口設置,例如如果用戶在那裏選擇了「en-US」,會發生什麼情況?你可以[強制丹麥語區域](https://stackoverflow.com/q/468791/1997232)。 – Sinatr

+0

我不想在這裏強迫任何東西。我只希望我的程序能夠遵循Windows區域設置中選擇的內容 – RWJ

+0

該代碼是否在該服務器上執行?並且該服務器的實際區域設置是否正確,或者只是顯示格式?兩者可以不同。 – DonBoitnott

回答

1

您是否嘗試過使用ToString()方法?

DateTime.Today.ToString(CultureInfo.InvariantCulture) 

結果:10/13/2017 00:00:00

DateTime.Today.ToString(CultureInfo.CurrentCulture); 

結果:13.10.2017 00:00:00

這是我在我的(德國),機上體驗。

+0

ToShortDateString也做文化,如果沒有文化指定它是當前的文化。問題在哪裏是默認是錯誤的(不變),儘管看到它在Windows任務欄中被時鐘使用 – RWJ

相關問題