TimeSpan ToString“[d。] hh:mm”

时间:2012-09-22 11:33:19

标签: c# tostring timespan custom-formatting

我尝试将TimeSpan格式化为字符串。 然后我从MSDN到期以生成我的自定义字符串格式。 但它没有言语。它返回“FormatException”。

为什么呢?我不明白......

var ts = new TimeSpan(0, 3, 25, 0);
var myString = ts.ToString("[d'.']hh':'mm");

2 个答案:

答案 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语句或?:运算符。