2011-01-31 62 views
1

我有一個應用程序在國際Windows XP安裝客戶端運行,客戶向我報告,有幾個客戶端無法在其國家/地區輸入日期日期分隔符(。)。系統配置正確。我的應用程序採用System.Globalization.DateTimeFormatInfo.CurrentInfo.DateSeparator的分隔符。 .net的版本是3.5SP1。.net全球化在國際和英國系統上的可靠性

我觀察到的另一個問題是在爲另一位客戶呈現另一個應用程序的過程中。該應用在應用運行時更改了日期輸出格式。而不是顯示dd.mm.yyyy,而是在大約1.5小時的演示後更改爲美國格式mm/dd/yyyy。因爲在演示期間,我看不出問題所在。我只重新啓動應用程序,一切都很好。演示筆記本電腦上的操作系統是W7 en。這裏我使用DateTime.ToShortDateString

我的問題是,如果還有其他程序員在國際系統上遇到全球化這種晦澀難懂的問題,並且如果是的話,是否還有一些問題和困難。或者有可能是我沒有意識到的鍵盤快捷方式,這會改變區域設置(不是鍵盤佈局,這是我知道的)。

回答

2

永遠不會依賴最終環境以及針對此類問題的安裝配置。 100%確定正確的全球化(以及本地化)的最好方法是將所有檢查放在代碼本身中。當我知道我的應用程序將用於不同的語言環境時,我通過代碼明確地獲取/設置當前的文化信息。此外,幾乎每種常見類型的解析方法(如數字,日期時間等)都有重載,可讓您指定在解析特定於文化的數據時使用的區域性信息。你確定嗎?

最後但並非最不重要的一點,請確保您的數據庫服務器正如您的sps被正確配置和編碼以用於不同語言環境中的數據輸入。例如,sql server有很多選項(包括ISO標準)用於日期時間解析/保存。 sql server 2008爲您提供了更容易和更好的選擇,以達到同樣的目的

此外,帶日期時間的黃金法則是始終以UTC保存它們,但基於當前時區/區域設置格式顯示它們。程序員犯的一個非常常見的錯誤就是不能在UTC中保存UTC/GMT格式的日期時間信息。例如:而不是保存DateTime.UTCNow,他們保存DateTime.Now。我已經看到了幾天,如果沒有花費數週的時間來嘗試找出應用程序處理多種文化/區域/時區時出現的這些錯誤/問題。同時處理數字。對於例如:在電子商務網站哪些交易主要銷售在多個國家和貨幣

+0

+1感謝您的信息和你的經驗。您非常清楚不使用系統設置。但是,這是因爲您不想依賴不正確配置的系統,或者因爲您不信任默認的全球化操作?配置不當的系統並不是我的擔心,我的應用程序通常運行在小型環境中(最多100個客戶端),因此我可以告訴支持人員進行正確配置。然而第二個是壞的,我不喜歡它構建系統已經支持的東西。他們幾乎總是會導致在未來的版本中不切實際的行爲...... – HCL 2011-01-31 13:15:19

+0

嗨hcl ...我明確的代碼檢查的原因是因爲我不相信任何人有正確的配置/安裝/支持。但我相信.net框架......如果一點額外的努力和精心的計劃可以讓我擺脫對系統管理員/支持人員的依賴,那麼爲什麼不呢:-) – Raj 2011-01-31 13:28:07