0

何らかの理由でスラッシュなしでデータベースに日付を保存しました。これは、20110602 のような日付フィールドがあることを意味します。

この日付を取得してテキストブロックに表示したいので、この日付をスラッシュ付きの通常の日付として表示するフォーマットが必要です。

このように StringFormat を使用するにはどうすればよいですか? ... "20110602" を 2011/06/02 に変換するためにどの形式を使用すればよいか知っている人はいますか?

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

2 に答える 2

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\}}"/>
于 2012-06-10T19:33:45.130 に答える
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

于 2012-06-10T19:24:41.383 に答える