2

次の文字列形式を使用して出力される変数があります。

var printThis = String.Format("{0:d}, {0:T}", dateAndTimeVar);

今、私は問題を抱えています。「dateAndTimeVar」に時間を設定していないときに「--.--.--」のようなものを表示するには、「{0:T}」が必要です。これは、通常のDateTimeタイプではサポートされていないようです(時刻が設定されていない場合、デフォルトで「00.00.00」が表示されます)。

'dateAndTimeVar'変数を任意の変数(他のタイプを含む)に変更できますが、文字列のフォーマットは同じままである必要があります。

これに対する解決策はありますか?

4

4 に答える 4

5

独自のIFormatProviderを作成し、次のようにString.Formatメソッドに渡す必要があります。

String.Format(new MyFormatProvider(), "{0:d}, {0:T}", dateAndTimeVar);

次に、FormatProviderは、Tを除くすべての形式でパススルーを実行します。ここで、DateTimeのネイティブT形式、またはDateTimeの時間部分が00:00の場合は--.--.--を出力するためのロジックがあります。 :00。

こちらのMSDNでIFormatProviderについてお読みください

于 2012-11-30T12:21:59.700 に答える
1

これはあなたが使用できる日時パターンのリストです

DateTime.ToString()パターン| GeekZilla

乾杯

于 2012-11-30T12:18:04.083 に答える
0

あなたは単にこれを行うことができます:

var printThis = String.Format("{0:d}, {0:T}", dateAndTimeVar)
                      .Replace("00:00:00", "--.--.--");
于 2012-11-30T12:24:46.047 に答える
0

DateTimeに時間が含まれているかどうかを簡単に確認できます。

String printThis = dateAndTimeVar.Date == dateAndTimeVar ?  
    String.Format("{0:d}, --.--.--", dateAndTimeVar) : 
    String.Format("{0:d}, {0:T}", dateAndTimeVar);
于 2012-11-30T12:29:06.723 に答える