使用dd和MM对文化敏感的DateTime.ToString

时间:2014-06-24 23:41:04

标签: c# wpf datetime-format

我希望以短日期格式显示WPF应用中的日期列表,并填充日期和月份。

即。在澳大利亚/英国,这应该显示为dd / MM / yyyy。在美国,它将显示为MM / dd / yyyy

我可以使用文化敏感的直接/简单方法或模式来做到这一点吗?

 DateTime.ToShortDateString() 

不填写日期和月份。

2 个答案:

答案 0 :(得分:1)

查看DateTimeFormatInfo类,根据文化格式设置DateTime值。

答案 1 :(得分:1)

CultureInfo内置于.NET框架中,因此您无需关心每种文化的格式化日期的详细信息。所以你应该做DateTime.ToShortDateString()并完成它。

话虽这么说,我们可以修改CultureInfo ShortDatePattern来获得你想要的东西。

static void Main()
{
    DateTime date = new DateTime(2014, 1, 2);

    // Change our CuurentCulture to: US
    CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-us");

    // Standard format for US: 1/2/2014
    Console.WriteLine(date.ToString("d"));        

    // Force leading zero on month and day for US format: 01/02/2014
    Console.WriteLine(GetShortDateString(date));



    // Change our CuurentCulture to: AU
    CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-au");

    // Standard format for AU: 2/01/2014
    Console.WriteLine(date.ToString("d"));

    // Force leading zero on day for AU format: 02/01/2014
    Console.WriteLine(GetShortDateString(date));        
}

static string GetShortDateString(DateTime date)
{
    string format = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;

    if (!format.Contains("dd"))
        format = format.Replace("d", "dd");

    if (!format.Contains("MM"))
        format = format.Replace("M", "MM");

    return date.ToString(format);
}