我嘗試將TimeSpan格式化爲字符串。 然後我從MSDN到期生成我自定義的字符串格式。 但它沒有文字。它返回「FormatException」。TimeSpan ToString「[d。] hh:mm」
爲什麼?我不明白...
var ts = new TimeSpan(0, 3, 25, 0);
var myString = ts.ToString("[d'.']hh':'mm");
我嘗試將TimeSpan格式化爲字符串。 然後我從MSDN到期生成我自定義的字符串格式。 但它沒有文字。它返回「FormatException」。TimeSpan ToString「[d。] hh:mm」
爲什麼?我不明白...
var ts = new TimeSpan(0, 3, 25, 0);
var myString = ts.ToString("[d'.']hh':'mm");
我想你正在試圖做類似的可選天和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();
當您使用格式字符串中已定義含義的符號時,通常會出現此錯誤。調試這些的最好方法是有選擇地刪除字符,直到它工作。你刪除的最後一個字符是問題之一。
在這種情況下,望着custom TimeSpan format strings,方括號是問題。用「\」轉義,例如:
var ts = new TimeSpan(0, 3, 25, 0);
var myString = ts.ToString("\\[d'.'\\]hh':'mm");
[編輯:新增]
沒有對客戶所提的自定義時間跨度格式字符串頁的方式忽略文本,如果值是0。在這種情況下, ,請考慮if
語句或?:
運算符。
是的,它肯定會有效。但我會使用ToString格式。 MSDN說我可以使用「[」和「]」。這是真的嗎? – riofly
它在哪裏說的?我只注意到''''和']'是它描述標準格式字符串的方式,但並不是說你實際上可以在自定義格式中使用這些'魔術'符號。 –
對不起,其實我錯了。 – riofly