使用WPF中的TextBlock中的StringFormat格式化日期

时间:2012-06-10 19:19:11

标签: wpf textblock string-formatting

由于某种原因,我在数据库中存储了日期而没有削减。这意味着我有一个像20110602这样的日期字段。

由于我想检索此日期并将其显示在文本块中,我需要格式化以将此日期显示为斜线的正常日期。

我如何以这种方式使用StringFormat? ...有没有人知道我应该使用什么格式将“20110602”转换为2011/06/02?

<TextBlock  Text="{Binding CreatedDate, StringFormat=?????" 

2 个答案:

答案 0 :(得分:4)

如果您更喜欢实施转换器的路线:

class dateTimeConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        string dateString = (string)value;
        return DateTime.ParseExact(dateString, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

然后在你的xaml

<TextBlock Text="{Binding Path=<path>, Converter={StaticResource <dateTimeConverterKey>}, StringFormat=\{0:yyyy/MM/dd\}}"/>

答案 1 :(得分:1)

尝试使用DateTime.ParseExact方法:

  dateString = "Sun 15 Jun 2008 8:30 AM -06:00";
  format = "ddd dd MMM yyyy h:mm tt zzz";
  try {
     result = DateTime.ParseExact(dateString, format, provider);
     Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
  }
  catch (FormatException) {
     Console.WriteLine("{0} is not in the correct format.", dateString);
  }

在你的情况下,我认为格式应该是:

 format = "yyyyMMdd";

了解更多信息:http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx