【问题标题】:Get the current time format in a WinRT app using c#.使用 c# 在 WinRT 应用程序中获取当前时间格式。
【发布时间】:2013-01-30 07:03:50
【问题描述】:

我需要使用 c# 在 WinRT 应用程序中获取当前时间格式。我已经使用 GeographicRegion 来获取区域,它只会告诉我们位置而不是格式。但通常我们只是改变格式来改变系统的日期时间格式。

所以请帮助我找出我们如何确切地知道格式,因为它总是返回“en-US”(默认语言)。

【问题讨论】:

  • 区域设置不是由用户指定吗?无论如何,请参阅stackoverflow.com/questions/12560412/… 或许
  • 是的,区域设置可以由用户指定....但是应用程序的要求是将一些字符串更改为更改后的文化,为此我需要检查格式何时更改运行应用程序或至少在应用程序启动时。

标签: c# windows-runtime windows-store-apps culture


【解决方案1】:

这显示了如何获取当前 UI 文化、指定(波兰语)文化的长时间模式(格式),以及使用指定文化和指定模式的默认格式获取当前时间:

Debug.WriteLine(CultureInfo.CurrentUICulture.DateTimeFormat.LongTimePattern);
Debug.WriteLine(new CultureInfo("pl-pl").DateTimeFormat.LongTimePattern);
Debug.WriteLine(DateTime.Now.ToString(new CultureInfo("pl-pl")));
Debug.WriteLine(DateTime.Now.ToString(new CultureInfo("pl-pl").DateTimeFormat.ShortTimePattern));

这些是输出:

H:mm:ss
HH:mm:ss
2013-01-30 08:21:09
08:21

【讨论】:

  • 谢谢 Filip,但我想知道事件或属性,它会告诉我当前的文化(在正在运行的应用程序中或至少在应用程序启动时),以便我可以更改字符串。就像在你的回答中一样,我应该如何发现它是“pl-pl”文化而不是“en-US”......
  • 我确实提到了 CultureInfo.CurrentUICulture... 还有 CultureInfo.CurrentCulture
  • 不,它没有给出确切的文化,它总是在 Metro 应用程序中返回“en-US”(应用程序的默认语言)文化,我在 WPF 项目中使用它,它给出了正确的文化,但在 Metro 应用程序中它总是提供相同的。
【解决方案2】:

Windows.Globalization.ApplicationLanguages.Languages 中的顶级语言告诉您应用程序正在运行的语言。

您不必知道,当您构造 Windows.Globalization.DateTimeFormatter 并且不提供语言时,这些语言是默认语言。

如果您想知道格式是什么而不实际呈现特定时间,请使用Patterns 属性。

【讨论】:

    猜你喜欢
    • 2012-04-08
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多