WPF 默认日期时间格式
WPF Default DateTime format
在大型 WPF 应用程序上工作并且 DateTime 格式存在一些问题,这是一个庞大的代码库,许多地方没有指定区域性。
当用户在 Windows 7 或 8 上打开应用程序时,日期时间格式不同(Win 7 使用斜杠,Win 8 使用破折号)。
我尝试在应用程序启动中将文化设置为 "en-US"(见下文 link),但它似乎不起作用?
Setting Culture (en-IN) Globally in WPF App
如何将我的 WPF 应用程序设置为不使用用户计算机的区域性?
这将为您提供您正在寻找的内容,或者您可以使用正则表达式...
DateTime dateTime;
bool validDate = DateTime.TryParseExact(
"04/22/2015",
"MM/dd/yyyy", // or you can use MM.dd.yyyy
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dateTime);
这是我在 OnStartup
中使用的内容。它与我使用 DefaultThreadCurrentCulture
时链接到的 SO 问题不同,因为它为整个进程和启动的任何线程设置了默认值。
DefaultThreadCurrentCulture
和 DefaultThreadCurrentUICulture
在 .NET 4.5 及更高版本中...
var newCulture = new CultureInfo(displayCulture);
// Set desired date format here
newCulture.DateTimeFormat.ShortDatePattern = "dd MMM yyyy";
// You cannot use DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture if
// you dont have .NET 4.5 or later. Just remove these two lines and pass the culture
// to any new threads you create and set Thread.CurrentThread...
CultureInfo.DefaultThreadCurrentCulture = newCulture;
CultureInfo.DefaultThreadCurrentUICulture = newCulture;
Thread.CurrentThread.CurrentCulture = newCulture;
Thread.CurrentThread.CurrentUICulture = newCulture;
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(
System.Windows.Markup.XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
在大型 WPF 应用程序上工作并且 DateTime 格式存在一些问题,这是一个庞大的代码库,许多地方没有指定区域性。
当用户在 Windows 7 或 8 上打开应用程序时,日期时间格式不同(Win 7 使用斜杠,Win 8 使用破折号)。
我尝试在应用程序启动中将文化设置为 "en-US"(见下文 link),但它似乎不起作用? Setting Culture (en-IN) Globally in WPF App
如何将我的 WPF 应用程序设置为不使用用户计算机的区域性?
这将为您提供您正在寻找的内容,或者您可以使用正则表达式...
DateTime dateTime;
bool validDate = DateTime.TryParseExact(
"04/22/2015",
"MM/dd/yyyy", // or you can use MM.dd.yyyy
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dateTime);
这是我在 OnStartup
中使用的内容。它与我使用 DefaultThreadCurrentCulture
时链接到的 SO 问题不同,因为它为整个进程和启动的任何线程设置了默认值。
DefaultThreadCurrentCulture
和 DefaultThreadCurrentUICulture
在 .NET 4.5 及更高版本中...
var newCulture = new CultureInfo(displayCulture);
// Set desired date format here
newCulture.DateTimeFormat.ShortDatePattern = "dd MMM yyyy";
// You cannot use DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture if
// you dont have .NET 4.5 or later. Just remove these two lines and pass the culture
// to any new threads you create and set Thread.CurrentThread...
CultureInfo.DefaultThreadCurrentCulture = newCulture;
CultureInfo.DefaultThreadCurrentUICulture = newCulture;
Thread.CurrentThread.CurrentCulture = newCulture;
Thread.CurrentThread.CurrentUICulture = newCulture;
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(
System.Windows.Markup.XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));