我尝试将TimeSpan格式化为字符串。 然后我从MSDN到期以生成我的自定义字符串格式。 但它没有言语。它返回“FormatException”。
为什么呢?我不明白......
var ts = new TimeSpan(0, 3, 25, 0);
var myString = ts.ToString("[d'.']hh':'mm");
答案 0 :(得分:9)
我认为你正试图做c
standard format的可选日期和小数秒部分。据我所知,自定义格式字符串不能直接实现。 TimeSpan FormatString with optional hours是您遇到的同类问题,我建议使用与其解决方案类似的内容:使用扩展方法为您构建格式字符串。
public static string ToMyFormat(this TimeSpan ts)
{
string format = ts.Days >= 1 ? "d'.'hh':'mm" : "hh':'mm";
return ts.ToString(format);
}
然后使用它:
var myString = ts.ToMyFormat();
答案 1 :(得分:3)
当您使用格式字符串中已定义含义的符号时,通常会发生此错误。调试这些的最佳方法是有选择地删除字符直到它工作。你删除的最后一个字符就是问题。
在这种情况下,查看custom TimeSpan format strings,方括号是问题所在。用“\”转义它们,例如:
var ts = new TimeSpan(0, 3, 25, 0);
var myString = ts.ToString("\\[d'.'\\]hh':'mm");
[编辑:已添加]
如果值为0,则客户自定义TimeSpan格式字符串页面上没有提及省略文本。在这种情况下,请考虑if
语句或?:
运算符。