我认为这将是一个非常简单的问题但我无法解决它。在我的应用程序中,我想显示当前时间,具体取决于用户的区域设置。如果我的手机通常显示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”(=奥地利);
有没有办法完成这项工作?
答案 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);
如果有人发现错误并且在所有会议中都不起作用,请告诉我。