WPF默认日期时间格式

使用大型WPF应用程序并遇到DateTime格式的一些问题,这是一个巨大的代码库,很多地方都没有指定文化。

当用户在Windows 7或8上打开应用程序时,日期时间格式不同(Win 7使用斜杠,Win 8使用短划线)。

我尝试在应用程序启动时将文化设置为“en-US”(参见下面的链接),但它似乎不起作用? 在WPF应用程序中设置全局文化(en-IN)

如何将我的WPF应用程序设置为不使用用户计算机的文化?

这是我在OnStartup使用的内容。 它与您链接的SO问题不同,因为我使用DefaultThreadCurrentCulture因为它设置了整个进程和任何线程启动的默认值。

DefaultThreadCurrentCultureDefaultThreadCurrentUICulture在.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))); 

这将为您提供您正在寻找的东西,或者您可以使用正则表达式…

  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);