2016-07-05 54 views
3

我有適用於Windows 10 Mobile的UWP應用程序。該應用程序目前提供兩種語言 - 英語(en-US)和捷克語(cs-CZ)。我遇到的問題是,當例如來自西班牙用戶使用的應用程序,日期和時間格式是美國,而不是西班牙(默認應用程序語言是en-US):獲取實際的系統文化信息

DateTime.Now.ToString("d", System.Globalization.CultureInfo.CurrentCulture); 
DateTime.Now.ToString("d", System.Globalization.CultureInfo.CurrentUICulture); 
DateTime.Now.ToString(System.Globalization.DateTimeFormatInfo.CurrentInfo.ShortDatePattern); 

我想以某種方式根據手機語言獲取ACTUAL系統語言,以獲得正確格式的日期和時間。目前,它看起來像System.Globalization命名空間中的所有API都會返回應用程序正在使用的區域性信息。

回答

3

更多的搜索後,我已經成功地遇到以下問題:Date Time formatting in Windows 10 Universals (Store) Apps其中問題的作者提到以下API調用:

Windows.System.UserProfile.GlobalizationPreferences.Languages[0] 

這將返回字符串的語言從第一語言用戶的系統偏好語言列表。

以下列方式使用它給了我預期的結果:

DateTime.Now.ToString("d", new System.Globalization.CultureInfo(Windows.System.UserProfile.GlobalizationPreferences.Languages[0])); 
+1

這失敗的系統,其中首選語言和首選區域設置是不一樣的。您正在根據用戶的首選語言構建「CultureInfo」對象,而不是用戶的首選日期和時間格式。 – IInspectable

+0

@IInspectable謝謝你的觀察!我做了一些研究,不幸的是,似乎沒有任何API。甚至UWP的'DatePicker'和'TimePicker'都使用基於第一種系統語言的格式,而不是首選的格式。所以這與系統其他行爲一致。 –

+0

儘管如此,一些應用程序仍然可以正確設置區域設置。在UWP開發中,我不夠熟悉,是否有一個專用(但是隱藏的)API,或者這些應用程序是否只是爲了評估/猜測所需的區域設置。 – IInspectable