Mys*_*gan 2 c# string datetime string-formatting datetime-format
我有一个变量,使用以下字符串格式打印出来:
var printThis = String.Format("{0:d}, {0:T}", dateAndTimeVar);
Run Code Online (Sandbox Code Playgroud)
现在我有一个问题; 当我没有设置'dateAndTimeVar'时,我需要'{0:T}'来显示类似'--. - .--'的内容.使用常规DateTime类型似乎不支持这种情况(如果没有设置时间,则默认显示'00 .00.00').
我可以将'dateAndTimeVar'变量更改为任何内容(包括其他类型),但字符串格式必须保持不变.
这有什么解决方案吗?
您需要创建自己的IFormatProvider并将其传递给String.Format方法
String.Format(new MyFormatProvider(), "{0:d}, {0:T}", dateAndTimeVar);
Run Code Online (Sandbox Code Playgroud)
然后,FormatProvider将对除T之外的所有格式进行传递,其中您可以使用逻辑输出DateTime的本机T格式或--. - .--如果DateTime的时间部分是00:00 :00.
在这里阅读MSDN上的IFormatProvider