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 回答