工作在大型WPF应用程序上,并且存在DateTime格式的一些问题,这是一个巨大的代码库,许多地方没有指定区域性。WPF默认日期时间格式
当用户在Windows 7或8上打开应用程序时,日期时间格式不同(Win 7使用斜线,Win 8使用破折号)。
我尝试在应用程序启动时将文化设置为“en-US”(请参阅下面的链接),但它似乎不起作用? Setting Culture (en-IN) Globally in WPF App
如何设置我的WPF应用程序不使用用户机器的文化?
工作在大型WPF应用程序上,并且存在DateTime格式的一些问题,这是一个巨大的代码库,许多地方没有指定区域性。WPF默认日期时间格式
当用户在Windows 7或8上打开应用程序时,日期时间格式不同(Win 7使用斜线,Win 8使用破折号)。
我尝试在应用程序启动时将文化设置为“en-US”(请参阅下面的链接),但它似乎不起作用? Setting Culture (en-IN) Globally in WPF App
如何设置我的WPF应用程序不使用用户机器的文化?
以下是我在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)));
这会为你提供你在找什么,或者你可以使用正则表达式...
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);
一定要检查每个操作系统上的时间/日期格式设置匹配。用户可以指定他们是否想要破折号或斜杠 - 而且巧合的是,您应该如何格式化日期字符串。我讨厌被迫以特定格式读取日期-_- – Kcvin
这是Windows 8用户的工作,他们需要进入他们的DateTime设置并添加斜杠而不是破折号。但是我的应用程序总是假设使用斜杠。这是用于UI中的显示目的,无论代码是在做什么DateTime.Now或DateTime.Parse等 – devfunkd
在一个地方的代码是DateTime.Parse(“2014/05/13”),但解析后的值是不管我提供什么文化,我都不知道为什么。 – devfunkd