2016-07-22 126 views
4

我正在使用DateTime.Now.ToString("d", new CultureInfo("nl-NL"))IIS和控制檯應用程序之間的DateTime.ToString(「d」,cultureInfo)輸出不同

在本地IIS Web應用程序,輸出是正確的:

22-7-2016 

在一個控制檯應用程序,該框架選擇了國際/區域性不變的日期標記:

2016-07-22 

這是同一臺機器,使用完全相同的代碼。我已經放置了一個斷點,檢查了所有的輸入,甚至嘗試了在當前窗口中運行命令。在任何情況下,控制檯應用程序都會出錯。

任何人都可以解釋導致差異的原因嗎?

+1

您能否包含您的控制檯應用程序的完整代碼,因此我們可以確認我們在測試中運行的代碼與您的代碼相同?我的簡短測試顯示沒有問題... – Chris

+0

什麼是DateTime? System.DateTime類沒有靜態的ToString方法,因此您所提供的代碼將不會編譯,除非您創建了一個名爲DateTime的變量或ToString擴展方法。 –

+1

'new CultureInfo(「nl-NL」,false)' – PetSerAl

回答

3

IIS和您的控制檯應用程序在不同的用戶帳戶下運行。如果您已經定製了日期格式(例如通過使用區域控制面板),那麼CultureInfo格式化程序將僅在您的帳戶中使用該定製。

您可以創建一個CultureInfo無視用戶設置:

new CultureInfo("nl-NL", useUserOverride: false) 

你重設帳戶的區域設置:運行>intl.cpl>選擇在下拉列表NL區域>其他設置>復位。

+0

@SonerGönül正如我在回答中所說的,'CultureInfo'受Windows設置的影響,並不是絕對的。親自嘗試一下。 –

+0

只是爲了說清楚 - 我並不是指改變語言環境 - 我的意思是改變某個語言環境的實際格式。它在控制面板中。 –

+0

@SonerGönül這些設置是每個帳戶。這是我能想到的唯一選擇,會使結果不同。 –

-1

我獲得了與.NET 4.5控制檯和Web應用程序相同的結果,在2012年VS

你能試試嗎?

yourDateTime.ToString("dd-MM-yyyy", new System.Globalization.CultureInfo("nl-NL")); 
+1

使用明確的格式字符串會勝過使用「d」的目的。 – CodeCaster

+1

僅用於測試目的。我說「你可以試試...」看看會發生什麼情況並找出問題所在。 –

+0

這很好,但那不是一個答案,也沒有證明任何東西。 – CodeCaster

相關問題