2016-07-05 31 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