WPF默认日期时间格式

时间:2015-04-22 20:30:37

标签: c# .net wpf datetime cultureinfo

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

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

我尝试将文化设置为" en-US"在应用程序启动中(见下面的链接),但它似乎不起作用? Setting Culture (en-IN) Globally in WPF App

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:-1)

这将为您提供所需的内容,或者您​​可以使用正则表达式...

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