显示当前时间,具体取决于Windows 10 UWP应用程序

时间:2016-04-22 21:42:04

标签: c# windows time win-universal-app region

我认为这将是一个非常简单的问题但我无法解决它。在我的应用程序中,我想显示当前时间,具体取决于用户的区域设置。如果我的手机通常显示17:48,我希望我的应用程序以这种格式显示它。如果它显示在下午5:48,那么相同的规则应该适用于我的应用。然而,无论我做什么,它只显示上午/下午的版本。我正在使用System。 DateTime 类。我看到了一些解决方案,我可以这样做(将时间设置为奥地利时间格式):

string time = DateTime.Now.ToString("t", de-AT);

它有效! 但是,我不想手动设置它,而是根据用户手机设置使用区域格式。 我尝试使用 CultureInfo.CurrentCulture 获取语言国家/地区名称,如下所示:

string time = DateTime.Now.ToString("t", CultureInfo.CurrentCulture.Name);

哪个不起作用,因为CultureInfo.CurrentCulture.Name始终显示en-US,即使我的手机设置为奥地利地区。 当我使用 GeographicRegion 类并打印时:

GeographicRegion userRegion = new GeographicRegion();
string region = userRegion.CodeTwoLetter;

打印userRegion.NativeName时,我会将AT作为字符串和“Österreich”(=奥地利);

有没有办法完成这项工作?

2 个答案:

答案 0 :(得分:0)

你可以使用 TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(TimeZoneInfo.Local.Id): DateTime dt = TimeZoneInfo.ConvertTime(DateTime.Now,timeZoneInfo);

答案 1 :(得分:0)

经过几个小时的搜索,我找到了一种方法让它发挥作用!我使用DateTimeFormatter类,它完全符合我的要求。至少据我所知。

        GeographicRegion userRegion = new GeographicRegion();
        string regionCode = userRegion.CodeTwoLetter;

        DateTimeFormatter timeFormatter = new DateTimeFormatter("hour minute", new[] { regionCode });
        string correctTime = timeFormatter.Format(DateTime.Now);           
        DateTimeFormatter dateFormatter = new DateTimeFormatter("dayofweek month day", new[] { regionCode });
        string correctDate = dateFormatter.Format(DateTime.Now);

如果有人发现错误并且在所有会议中都不起作用,请告诉我。