我有一个变量,使用以下字符串格式打印出来:
var printThis = String.Format("{0:d}, {0:T}", dateAndTimeVar);
现在我遇到了问题;当我没有设置'dateAndTimeVar'时,我需要'{0:T}'来显示类似'--. - .--'的内容。使用常规DateTime类型似乎不支持这种情况(如果没有设置时间,则默认显示'00 .00.00')。
我可以将'dateAndTimeVar'变量更改为任何内容(包括其他类型),但字符串格式必须保持不变。
有没有解决方案?
答案 0 :(得分:5)
您需要创建自己的IFormatProvider并将其传递给String.Format方法,如下所示
String.Format(new MyFormatProvider(), "{0:d}, {0:T}", dateAndTimeVar);
然后,FormatProvider将对除T之外的所有格式进行传递,您可以使用逻辑输出DateTime的本机T格式或--. - .--如果DateTime的时间部分是00:00:00。
在MSDN上了解IFormatProvider here
答案 1 :(得分:1)
答案 2 :(得分:0)
你可以这样做:
var printThis = String.Format("{0:d}, {0:T}", dateAndTimeVar)
.Replace("00:00:00", "--.--.--");
答案 3 :(得分:0)
您只需检查DateTime
是否包含时间:
String printThis = dateAndTimeVar.Date == dateAndTimeVar ?
String.Format("{0:d}, --.--.--", dateAndTimeVar) :
String.Format("{0:d}, {0:T}", dateAndTimeVar);